Changeset 4881 for branches/2014/dev_r4650_UKMO13_CICE_changes_take2
- Timestamp:
- 2014-11-21T11:25:19+01:00 (10 years ago)
- Location:
- branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r4748 r4881 1009 1009 #endif 1010 1010 1011 #if ( defined key_cice || defined key_cice5 )&& defined key_asminc1011 #if defined key_cice && defined key_asminc 1012 1012 ! Sea-ice : CICE case. Pass ice increment tendency into CICE 1013 1013 ndaice_da(:,:) = seaice_bkginc(:,:) * zincwgt / rdt … … 1020 1020 ELSE 1021 1021 1022 #if ( defined key_cice || defined key_cice5 )&& defined key_asminc1022 #if defined key_cice && defined key_asminc 1023 1023 ! Sea-ice : CICE case. Zero ice increment tendency into CICE 1024 1024 ndaice_da(:,:) = 0.0_wp … … 1064 1064 #endif 1065 1065 1066 #if ( defined key_cice || defined key_cice5 )&& defined key_asminc1066 #if defined key_cice && defined key_asminc 1067 1067 ! Sea-ice : CICE case. Pass ice increment tendency into CICE 1068 1068 ndaice_da(:,:) = seaice_bkginc(:,:) / rdt … … 1074 1074 ELSE 1075 1075 1076 #if ( defined key_cice || defined key_cice5 )&& defined key_asminc1076 #if defined key_cice && defined key_asminc 1077 1077 ! Sea-ice : CICE case. Zero ice increment tendency into CICE 1078 1078 ndaice_da(:,:) = 0.0_wp … … 1081 1081 ENDIF 1082 1082 1083 !#if defined defined key_lim2 || defined key_cice || defined key_cice51083 !#if defined defined key_lim2 || defined key_cice 1084 1084 ! 1085 1085 ! IF (ln_seaicebal ) THEN -
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90
r4748 r4881 47 47 REAL(wp), PUBLIC :: rt0_ice = 273.05_wp !: melting point of ice [Kelvin] 48 48 #endif 49 #if defined key_cice || defined key_cice549 #if defined key_cice 50 50 REAL(wp), PUBLIC :: rau0 = 1026._wp !: volumic mass of reference [kg/m3] 51 51 #else … … 67 67 REAL(wp), PUBLIC :: stefan = 5.67e-8_wp !: Stefan-Boltzmann constant 68 68 69 #if defined key_lim3 || defined key_cice || defined key_cice569 #if defined key_lim3 || defined key_cice 70 70 REAL(wp), PUBLIC :: rhoic = 917._wp !: volumic mass of sea ice [kg/m3] 71 71 REAL(wp), PUBLIC :: rcdic = 2.034396_wp !: thermal conductivity of fresh ice … … 136 136 rsiyea = 365.25_wp * rday * 2._wp * rpi / 6.283076_wp 137 137 rsiday = rday / ( 1._wp + rday / rsiyea ) 138 #if defined key_cice || key_cice5138 #if defined key_cice 139 139 omega = 7.292116e-05 140 140 #else … … 174 174 175 175 176 #if defined key_lim3 || defined key_cice || key_cice5176 #if defined key_lim3 || defined key_cice 177 177 xlsn = lfus * rhosn ! volumetric latent heat fusion of snow [J/m3] 178 178 #else … … 187 187 WRITE(numout,*) ' fresh ice specific heat = ', cpic , ' J/kg/K' 188 188 WRITE(numout,*) ' latent heat of fusion of fresh ice / snow = ', lfus , ' J/kg' 189 #if defined key_lim3 || defined key_cice || key_cice5189 #if defined key_lim3 || defined key_cice 190 190 WRITE(numout,*) ' latent heat of subl. of fresh ice / snow = ', lsub , ' J/kg' 191 191 #else -
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r4748 r4881 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_cice || defined key_cice511 #if defined key_lim3 || defined key_lim2 || defined key_cice 12 12 !!---------------------------------------------------------------------- 13 13 !! 'key_lim2' or 'key_lim3' : LIM-2 or LIM-3 sea-ice model … … 21 21 USE ice_2 22 22 # endif 23 # if defined key_cice || defined key_cice523 # if defined key_cice 24 24 USE ice_domain_size, only: ncat 25 25 #endif … … 48 48 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: 'C'-grid ice-velocity 49 49 # endif 50 # if defined key_cice || defined key_cice550 # if defined key_cice 51 51 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 52 52 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 … … 75 75 # endif 76 76 77 #elif defined key_cice || key_cice577 #elif defined key_cice 78 78 ! 79 79 ! for consistency with LIM, these are declared with three dimensions … … 127 127 & emp_ice(jpi,jpj) , STAT= ierr(1) ) 128 128 #endif 129 #elif defined key_cice || defined key_cice5129 #elif defined key_cice 130 130 ALLOCATE( qla_ice(jpi,jpj,1) , qlw_ice(jpi,jpj,1) , qsr_ice(jpi,jpj,1) , & 131 131 wndi_ice(jpi,jpj) , tatm_ice(jpi,jpj) , qatm_ice(jpi,jpj) , & -
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r4809 r4881 39 39 USE prtctl ! Print control 40 40 USE sbcwave,ONLY : cdn_wave !wave module 41 #if defined key_lim3 || defined key_cice || defined key_cice541 #if defined key_lim3 || defined key_cice 42 42 USE sbc_ice ! Surface boundary condition: ice fields 43 43 #endif … … 194 194 IF( ltrcdm2dc ) CALL blk_bio_meanqsr 195 195 196 #if defined key_cice || defined key_cice5196 #if defined key_cice 197 197 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN 198 198 qlw_ice(:,:,1) = sf(jp_qlw)%fnow(:,:,1) -
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r4748 r4881 53 53 #endif 54 54 USE diaar5, ONLY : lk_diaar5 55 #if defined key_cice || defined key_cice555 #if defined key_cice 56 56 USE ice_domain_size, only: ncat 57 57 #endif … … 145 145 #endif 146 146 147 #if defined key_cice || defined key_cice5147 #if defined key_cice 148 148 INTEGER, PARAMETER :: jpl = ncat 149 149 #elif ! defined key_lim2 && ! defined key_lim3 … … 153 153 #endif 154 154 155 #if ! defined key_lim3 && ! defined key_cice && ! defined key_cice5155 #if ! defined key_lim3 && ! defined key_cice 156 156 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i 157 157 #endif … … 161 161 #endif 162 162 163 #if ! defined key_cice && ! defined key_cice5163 #if ! defined key_cice 164 164 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: topmelt, botmelt 165 165 #endif … … 192 192 #endif 193 193 194 #if ! defined key_lim3 && ! defined key_cice && ! defined key_cice5194 #if ! defined key_lim3 && ! defined key_cice 195 195 ALLOCATE( a_i(jpi,jpj,jpl) , STAT=ierr(3) ) 196 196 #endif 197 197 198 #if defined key_cice || defined key_ cice5 || defined key_lim2198 #if defined key_cice || defined key_lim2 199 199 ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(4) ) 200 200 #endif -
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r4748 r4881 85 85 area = glob_sum( e1e2t(:,:) ) ! interior global domain surface 86 86 ! 87 #if ! defined key_lim2 && ! defined key_lim3 && ! defined key_cice && ! defined key_cice587 #if ! defined key_lim2 && ! defined key_lim3 && ! defined key_cice 88 88 snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass 89 89 snwice_mass (:,:) = 0.e0 -
branches/2014/dev_r4650_UKMO13_CICE_changes_take2/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r4748 r4881 4 4 !! To couple with sea ice model CICE (LANL) 5 5 !!===================================================================== 6 #if defined key_cice || defined key_cice56 #if defined key_cice 7 7 !!---------------------------------------------------------------------- 8 8 !! 'key_cice' : CICE sea-ice model … … 17 17 USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic 18 18 USE in_out_manager ! I/O manager 19 USE iom, only : iom_put ! I/O manager library !!Joakim edit 19 20 USE lib_mpp ! distributed memory computing library 20 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 37 38 USE ice_calendar, only: dt 38 39 USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen 39 # if defined key_cice5 40 # if defined key_cice4 41 USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow, & 42 sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_gbm, & 43 fresh_gbm,fhocn_gbm,fswthru_gbm,frzmlt, & 44 flatn_f,fsurfn_f,fcondtopn_f, & 45 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl, & 46 swvdr,swvdf,swidr,swidf 47 USE ice_therm_vertical, only: calc_Tsfc 48 #else 40 49 USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow, & 41 50 sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_ai, & … … 45 54 swvdr,swvdf,swidr,swidf 46 55 USE ice_therm_shared, only: calc_Tsfc 47 #else48 USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow, &49 sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_gbm, &50 fresh_gbm,fhocn_gbm,fswthru_gbm,frzmlt, &51 flatn_f,fsurfn_f,fcondtopn_f, &52 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl, &53 swvdr,swvdf,swidr,swidf54 USE ice_therm_vertical, only: calc_Tsfc55 56 #endif 56 57 USE ice_forcing, only: frcvdr,frcvdf,frcidr,frcidf … … 158 159 REAL(wp), DIMENSION(:,:), POINTER :: ztmp1, ztmp2 159 160 REAL(wp) :: zcoefu, zcoefv, zcoeff ! local scalar 160 INTEGER :: ji, jj, jl 161 INTEGER :: ji, jj, jl, jk ! dummy loop indices 161 162 !!--------------------------------------------------------------------- 162 163 … … 227 228 snwice_mass_b(:,:) = 0.0_wp ! no mass exchanges 228 229 ENDIF 229 IF( nn_ice_embd == 2 .AND. & ! full embedment (case 2) & no restart : 230 & .NOT.ln_rstart ) THEN ! deplete the initial ssh belew sea-ice area 231 sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 232 sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 233 ! 230 IF( .NOT. ln_rstart ) THEN 231 IF( nn_ice_embd == 2 ) THEN ! full embedment (case 2) deplete the initial ssh below sea-ice area 232 sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 233 sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 234 #if defined key_vvl 235 ! key_vvl necessary? clem: yes for compilation purpose 236 DO jk = 1,jpkm1 ! adjust initial vertical scale factors 237 fse3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 238 fse3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 239 ENDDO 240 fse3t_a(:,:,:) = fse3t_b(:,:,:) 241 ! Reconstruction of all vertical scale factors at now and before time 242 ! steps 243 ! ============================================================================= 244 ! Horizontal scale factor interpolations 245 ! -------------------------------------- 246 CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3u_b(:,:,:), 'U' ) 247 CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3v_b(:,:,:), 'V' ) 248 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3u_n(:,:,:), 'U' ) 249 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3v_n(:,:,:), 'V' ) 250 CALL dom_vvl_interpol( fse3u_n(:,:,:), fse3f_n(:,:,:), 'F' ) 251 ! Vertical scale factor interpolations 252 ! ------------------------------------ 253 CALL dom_vvl_interpol( fse3t_n(:,:,:), fse3w_n (:,:,:), 'W' ) 254 CALL dom_vvl_interpol( fse3u_n(:,:,:), fse3uw_n(:,:,:), 'UW' ) 255 CALL dom_vvl_interpol( fse3v_n(:,:,:), fse3vw_n(:,:,:), 'VW' ) 256 CALL dom_vvl_interpol( fse3u_b(:,:,:), fse3uw_b(:,:,:), 'UW' ) 257 CALL dom_vvl_interpol( fse3v_b(:,:,:), fse3vw_b(:,:,:), 'VW' ) 258 ! t- and w- points depth 259 ! ---------------------- 260 fsdept_n(:,:,1) = 0.5_wp * fse3w_n(:,:,1) 261 fsdepw_n(:,:,1) = 0.0_wp 262 fsde3w_n(:,:,1) = fsdept_n(:,:,1) - sshn(:,:) 263 DO jk = 2, jpk 264 fsdept_n(:,:,jk) = fsdept_n(:,:,jk-1) + fse3w_n(:,:,jk) 265 fsdepw_n(:,:,jk) = fsdepw_n(:,:,jk-1) + fse3t_n(:,:,jk-1) 266 fsde3w_n(:,:,jk) = fsdept_n(:,:,jk ) - sshn (:,:) 267 END DO 268 #endif 269 ENDIF 234 270 ENDIF 235 271 … … 384 420 385 421 ! Snowfall 386 ! Ensure fsnow is positive (as in CICE routine prepare_forcing) 422 ! Ensure fsnow is positive (as in CICE routine prepare_forcing) 423 CALL iom_put('snowpre',MAX( (1.0-fr_i(:,:))*sprecip(:,:) ,0.0)) !!Joakim edit 387 424 ztmp(:,:)=MAX(fr_i(:,:)*sprecip(:,:),0.0) 388 425 CALL nemo2cice(ztmp,fsnow,'T', 1. ) 389 426 390 427 ! Rainfall 428 CALL iom_put('precip', (1.0-fr_i(:,:))*(tprecip(:,:)-sprecip(:,:)) ) !!Joakim edit 391 429 ztmp(:,:)=fr_i(:,:)*(tprecip(:,:)-sprecip(:,:)) 392 430 CALL nemo2cice(ztmp,frain,'T', 1. ) … … 533 571 ENDIF 534 572 535 #if defined key_cice5 573 #if defined key_cice4 574 CALL cice2nemo(fresh_gbm,ztmp1,'T', 1. ) 575 CALL cice2nemo(fsalt_gbm,ztmp2,'T', 1. ) 576 #else 536 577 CALL cice2nemo(fresh_ai,ztmp1,'T', 1. ) 537 578 CALL cice2nemo(fsalt_ai,ztmp2,'T', 1. ) 538 #else539 CALL cice2nemo(fresh_gbm,ztmp1,'T', 1. )540 CALL cice2nemo(fsalt_gbm,ztmp2,'T', 1. )541 579 #endif 542 580 … … 549 587 sfx(:,:)=ztmp2(:,:)*1000.0 550 588 emp(:,:)=emp(:,:)-ztmp1(:,:) 551 589 fmmflx(:,:) = ztmp1(:,:) !!Joakim edit 590 552 591 CALL lbc_lnk( emp , 'T', 1. ) 553 592 CALL lbc_lnk( sfx , 'T', 1. ) … … 571 610 ! Now add in ice / snow related terms 572 611 ! [fswthru will be zero unless running with calc_Tsfc=T in CICE] 573 #if defined key_cice5 612 #if defined key_cice4 613 CALL cice2nemo(fswthru_gbm,ztmp1,'T', 1. ) 614 #else 574 615 CALL cice2nemo(fswthru_ai,ztmp1,'T', 1. ) 575 #else576 CALL cice2nemo(fswthru_gbm,ztmp1,'T', 1. )577 616 #endif 578 617 qsr(:,:)=qsr(:,:)+ztmp1(:,:) … … 585 624 ENDDO 586 625 587 #if defined key_cice5 626 #if defined key_cice4 627 CALL cice2nemo(fhocn_gbm,ztmp1,'T', 1. ) 628 #else 588 629 CALL cice2nemo(fhocn_ai,ztmp1,'T', 1. ) 589 #else590 CALL cice2nemo(fhocn_gbm,ztmp1,'T', 1. )591 630 #endif 592 631 qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:) … … 735 774 IF( kt == nit000 ) THEN ! First call kt=nit000 ! 736 775 ! ! ====================== ! 776 ! namsbc_cice is not yet in the reference namelist 777 ! set file information (default values) 778 cn_dir = './' ! directory in which the model is executed 779 780 ! (NB: frequency positive => hours, negative => months) 781 ! ! file ! frequency ! variable ! time intep ! clim ! 'yearly' or ! weights ! rotation ! landmask 782 ! ! name ! (hours) ! name ! (T/F) ! (T/F) ! 'monthly' ! filename ! pairs ! file 783 sn_snow = FLD_N( 'snowfall_1m' , -1. , 'snowfall' , .true. , .true. , ' yearly' , '' , '' , '' ) 784 sn_rain = FLD_N( 'rainfall_1m' , -1. , 'rainfall' , .true. , .true. , ' yearly' , '' , '' , '' ) 785 sn_sblm = FLD_N( 'sublim_1m' , -1. , 'sublim' , .true. , .true. , ' yearly' , '' , '' , '' ) 786 sn_top1 = FLD_N( 'topmeltn1_1m' , -1. , 'topmeltn1' , .true. , .true. , ' yearly' , '' , '' , '' ) 787 sn_top2 = FLD_N( 'topmeltn2_1m' , -1. , 'topmeltn2' , .true. , .true. , ' yearly' , '' , '' , '' ) 788 sn_top3 = FLD_N( 'topmeltn3_1m' , -1. , 'topmeltn3' , .true. , .true. , ' yearly' , '' , '' , '' ) 789 sn_top4 = FLD_N( 'topmeltn4_1m' , -1. , 'topmeltn4' , .true. , .true. , ' yearly' , '' , '' , '' ) 790 sn_top5 = FLD_N( 'topmeltn5_1m' , -1. , 'topmeltn5' , .true. , .true. , ' yearly' , '' , '' , '' ) 791 sn_bot1 = FLD_N( 'botmeltn1_1m' , -1. , 'botmeltn1' , .true. , .true. , ' yearly' , '' , '' , '' ) 792 sn_bot2 = FLD_N( 'botmeltn2_1m' , -1. , 'botmeltn2' , .true. , .true. , ' yearly' , '' , '' , '' ) 793 sn_bot3 = FLD_N( 'botmeltn3_1m' , -1. , 'botmeltn3' , .true. , .true. , ' yearly' , '' , '' , '' ) 794 sn_bot4 = FLD_N( 'botmeltn4_1m' , -1. , 'botmeltn4' , .true. , .true. , ' yearly' , '' , '' , '' ) 795 sn_bot5 = FLD_N( 'botmeltn5_1m' , -1. , 'botmeltn5' , .true. , .true. , ' yearly' , '' , '' , '' ) 796 737 797 REWIND( numnam_ref ) ! Namelist namsbc_cice in reference namelist : 738 798 READ ( numnam_ref, namsbc_cice, IOSTAT = ios, ERR = 901)
Note: See TracChangeset
for help on using the changeset viewer.