Changeset 5390 for branches/UKMO
- Timestamp:
- 2015-06-10T10:48:39+02:00 (9 years ago)
- Location:
- branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/CONFIG/SHARED/namelist_ref
r5213 r5390 350 350 sn_snd_crt = 'none' , 'no' , 'spherical' , 'eastward-northward' , 'T' 351 351 sn_snd_co2 = 'coupled' , 'no' , '' , '' , '' 352 sn_snd_cond = 'none' , 'no' , '' , '' , '' 352 353 sn_snd_mpnd = 'none' , 'no' , '' , '' , '' 354 sn_snd_sstfrz = 'none' , 'no' , '' , '' , '' 353 355 ! receive 354 356 sn_rcv_w10m = 'none' , 'no' , '' , '' , '' -
branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r5234 r5390 89 89 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_iv !: ice fraction at NEMO V point 90 90 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sstfrz !: sea surface freezing temperature 91 91 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tsfc_ice !: sea-ice surface skin temperature (on categories) 92 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: kn_ice !: sea-ice surface layer thermal conductivity (on cats) 93 92 94 ! variables used in the coupled interface 93 95 INTEGER , PUBLIC, PARAMETER :: jpl = ncat … … 150 152 & v_ice(jpi,jpj) , fr2_i0(jpi,jpj) , alb_ice(jpi,jpj,1) , & 151 153 & emp_ice(jpi,jpj) , qns_ice(jpi,jpj,1) , dqns_ice(jpi,jpj,1) , & 152 & a_p(jpi,jpj,jpl) , ht_p(jpi,jpj,jpl) , STAT=ierr(2) ) 154 & a_p(jpi,jpj,jpl) , ht_p(jpi,jpj,jpl) , tsfc_ice(jpi,jpj,jpl) , & 155 & kn_ice(jpi,jpj,jpl) , STAT=ierr(2) ) 153 156 154 157 #endif -
branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r5377 r5390 107 107 INTEGER, PARAMETER :: jps_a_p = 16 ! meltpond fraction 108 108 INTEGER, PARAMETER :: jps_ht_p = 17 ! meltpond depth (m) 109 INTEGER, PARAMETER :: jpsnd = 18 ! total number of fields sent 109 INTEGER, PARAMETER :: jps_kice = 18 ! ice surface layer thermal conductivity 110 INTEGER, PARAMETER :: jps_sstfrz = 19 ! sea-surface freezing temperature 111 INTEGER, PARAMETER :: jpsnd = 19 ! total number of fields sent 110 112 ! !!** namelist namsbc_cpl ** 111 113 TYPE :: FLD_C … … 117 119 END TYPE FLD_C 118 120 ! Send to the atmosphere ! 119 TYPE(FLD_C) :: sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_mpnd 121 TYPE(FLD_C) :: sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_mpnd, sn_snd_cond, ssn_snd_sstfrz 122 120 123 ! Received from the atmosphere ! 121 124 TYPE(FLD_C) :: sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau, sn_rcv_dqnsdt, sn_rcv_qsr, sn_rcv_qns, sn_rcv_emp, sn_rcv_rnf … … 241 244 WRITE(numout,*)' - mesh = ', sn_snd_crt%clvgrd 242 245 WRITE(numout,*)' oce co2 flux = ', TRIM(sn_snd_co2%cldes ), ' (', TRIM(sn_snd_co2%clcat ), ')' 246 WRITE(numout,*)' ice effective conductivity = ', TRIM(sn_snd_cond%cldes ), ' (', TRIM(sn_snd_cond%clcat ), ')' 243 247 WRITE(numout,*)' meltponds fraction & depth = ', TRIM(sn_snd_mpnd%cldes ), ' (', TRIM(sn_snd_mpnd%clcat ), ')' 248 WRITE(numout,*)' sea surface freezing temp = ', TRIM(sn_snd_sstfrz%cldes ), ' (', TRIM(sn_snd_sstfrz%clcat ), ')' 249 244 250 WRITE(numout,*)' nn_cplmodel = ', nn_cplmodel 245 251 WRITE(numout,*)' ln_usecplmask = ', ln_usecplmask … … 356 362 srcv(jpr_snow)%clname = 'OTotSnow' ! Snow = solid precipitation 357 363 srcv(jpr_tevp)%clname = 'OTotEvap' ! total evaporation (over oce + ice sublimation) 358 srcv(jpr_ievp)%clname = 'OIceEv ap' ! evaporation over ice = sublimation364 srcv(jpr_ievp)%clname = 'OIceEvp' ! evaporation over ice = sublimation 359 365 srcv(jpr_sbpr)%clname = 'OSubMPre' ! sublimation - liquid precipitation - solid precipitation 360 366 srcv(jpr_semp)%clname = 'OISubMSn' ! ice solid water budget = sublimation - solid precipitation … … 490 496 ! ! ------------------------- ! 491 497 ssnd(jps_toce)%clname = 'O_SSTSST' 492 ssnd(jps_tice)%clname = 'O _TepIce'498 ssnd(jps_tice)%clname = 'OTepIce' 493 499 ssnd(jps_tmix)%clname = 'O_TepMix' 494 500 SELECT CASE( TRIM( sn_snd_temp%cldes ) ) … … 498 504 ssnd( (/jps_toce, jps_tice/) )%laction = .TRUE. 499 505 IF ( TRIM( sn_snd_temp%clcat ) == 'yes' ) ssnd(jps_tice)%nct = jpl 506 CASE ( 'oce and ice' ) 507 ssnd( (/jps_toce, jps_tice/) )%laction = .TRUE. 508 IF ( TRIM( sn_snd_temp%clcat ) == 'yes' ) THEN 509 ssnd(jps_tice)%nct = jpl 510 ELSE 511 IF ( jpl > 1 ) THEN 512 CALL ctl_stop( 'sbc_cpl_init: use weighted oce and ice option for sn_snd_temp%cldes if not exchanging category fields' ) 513 ENDIF 514 ENDIF 500 515 CASE( 'mixed oce-ice' ) ; ssnd( jps_tmix )%laction = .TRUE. 501 516 CASE default ; CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_temp%cldes' ) … … 622 637 ! ! ------------------------- ! 623 638 ssnd(jps_co2)%clname = 'O_CO2FLX' ; IF( TRIM(sn_snd_co2%cldes) == 'coupled' ) ssnd(jps_co2 )%laction = .TRUE. 639 ! 640 641 642 ! ! ------------------------- ! 643 ! ! Sea surface freezing temp ! 644 ! ! ------------------------- ! 645 ssnd(jps_sstfrz)%clname = 'O_SSTFrz' ; IF( TRIM(sn_snd_sstfrz%cldes) == 'coupled' ) ssnd(jps_sstfrz)%laction = .TRUE. 646 ! 647 ! ! ------------------------- ! 648 ! ! Ice conductivity ! 649 ! ! ------------------------- ! 650 ! Note that ultimately we will move to passing an ocean effective conductivity as well so there 651 ! will be some changes to the parts of the code which currently relate only to ice conductivity 652 ssnd(jps_kice )%clname = 'OIceKn' 653 SELECT CASE ( TRIM( sn_snd_cond%cldes ) ) 654 CASE ( 'none' ) 655 ssnd(jps_kice)%laction = .FALSE. 656 CASE ( 'ice only' ) 657 ssnd(jps_kice)%laction = .TRUE. 658 IF ( TRIM( sn_snd_cond%clcat ) == 'yes' ) THEN 659 ssnd(jps_kice)%nct = jpl 660 ELSE 661 IF ( jpl > 1 ) THEN 662 CALL ctl_stop( 'sbc_cpl_init: use weighted ice option for sn_snd_cond%cldes if not exchanging category fields' ) 663 ENDIF 664 ENDIF 665 CASE ( 'weighted ice' ) 666 ssnd(jps_kice)%laction = .TRUE. 667 IF ( TRIM( sn_snd_cond%clcat ) == 'yes' ) ssnd(jps_kice)%nct = jpl 668 CASE default ; CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_cond%cldes' ) 669 END SELECT 624 670 ! 625 671 ! ================================ ! … … 843 889 #if defined key_cice && ! defined key_cice4 844 890 ! ! Sea ice surface skin temp: 845 ! Use tn_ice for this as it's not used for anything else in cice case846 891 IF( srcv(jpr_ts_ice)%laction ) THEN 847 892 DO jl = 1, jpl … … 849 894 DO ji = 1, jpi 850 895 IF (frcv(jpr_ts_ice)%z3(ji,jj,jl) > 0.0) THEN 851 t n_ice(ji,jj,jl) = 0.0896 tsfc_ice(ji,jj,jl) = 0.0 852 897 ELSE IF (frcv(jpr_ts_ice)%z3(ji,jj,jl) < -60.0) THEN 853 t n_ice(ji,jj,jl) = -60.0898 tsfc_ice(ji,jj,jl) = -60.0 854 899 ELSE 855 t n_ice(ji,jj,jl) = frcv(jpr_ts_ice)%z3(ji,jj,jl)900 tsfc_ice(ji,jj,jl) = frcv(jpr_ts_ice)%z3(ji,jj,jl) 856 901 ENDIF 857 902 END DO … … 1546 1591 IF( ssnd(jps_a_p)%laction ) CALL cpl_snd( jps_a_p, isec, ztmp3, info ) 1547 1592 IF( ssnd(jps_ht_p)%laction ) CALL cpl_snd( jps_ht_p, isec, ztmp4, info ) 1593 ! 1594 ! Send ice effective conductivity 1595 SELECT CASE( sn_snd_cond%cldes) 1596 CASE( 'weighted ice' ) 1597 SELECT CASE( sn_snd_cond%clcat ) 1598 CASE( 'yes' ) 1599 ztmp3(:,:,1:jpl) = kn_ice(:,:,1:jpl) * a_i(:,:,1:jpl) 1600 CASE( 'no' ) 1601 ztmp3(:,:,:) = 0.0 1602 DO jl=1,jpl 1603 ztmp3(:,:,1) = ztmp3(:,:,1) + kn_ice(:,:,jl) * a_i(:,:,jl) 1604 ENDDO 1605 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_cond%clcat' ) 1606 END SELECT 1607 CASE( 'ice only' ) 1608 ztmp3(:,:,1:jpl) = kn_ice(:,:,1:jpl) 1609 END SELECT 1610 IF( ssnd(jps_kice)%laction ) CALL cpl_prism_snd( jps_kice, isec, ztmp3, info ) 1548 1611 ENDIF 1549 1612 ! … … 1686 1749 ENDIF 1687 1750 ! 1751 ztmp1(:,:) = sstfrz(:,:) + rt0 1752 IF( ssnd(jps_sstfrz)%laction ) CALL cpl_prism_snd( jps_sstfrz, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 1753 ! 1688 1754 CALL wrk_dealloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 1689 1755 CALL wrk_dealloc( jpi,jpj,jpl, ztmp3, ztmp4 ) -
branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r5162 r5390 16 16 USE domvvl 17 17 USE eosbn2, only : eos_fzp ! Function to calculate freezing point of seawater 18 USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic 18 USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic, rt0 19 19 USE in_out_manager ! I/O manager 20 20 USE iom, ONLY : iom_put,iom_use ! I/O manager library !!Joakim edit … … 39 39 USE ice_calendar, only: dt 40 40 # if defined key_cice4 41 USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen 41 USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen, & 42 nt_Tsfc 42 43 USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow, & 43 44 sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_gbm, & … … 45 46 flatn_f,fsurfn_f,fcondtopn_f, & 46 47 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl, & 47 swvdr,swvdf,swidr,swidf,Tf 48 swvdr,swvdf,swidr,swidf,Tf !!! & 49 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 50 !!! LINE BELOW COMMENTED OUT TEMPORARILY UNTIL CICE MULTILAYERS !!! 51 !!! BRANCH CAN BE INCLUDED AT CICE5. !!! 52 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 53 !! ,keffn_top,Tn_top 54 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 55 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 56 48 57 USE ice_therm_vertical, only: calc_Tsfc 49 58 #else … … 56 65 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl, & 57 66 swvdr,swvdf,swidr,swidf,Tf 58 USE ice_therm_shared, only: calc_Tsfc 67 USE ice_therm_shared, only: calc_Tsfc, heat_capacity 59 68 USE ice_shortwave, only: apeffn 60 69 #endif … … 453 462 CALL nemo2cice(sss_m,sss,'T', 1. ) 454 463 464 ! Sea ice surface skin temperature 465 DO jpl=1,ncat 466 CALL nemo2cice(tsfc_ice(:,:,jpl), trcrn(:,:,nt_tsfc,jpl,:),'T',1.) 467 ENDDO 468 455 469 ! x comp and y comp of surface ocean current 456 470 ! U point to F point … … 727 741 ENDDO 728 742 #endif 743 744 745 ! If using multilayers thermodynamics in CICE then get top layer temperature 746 ! and effective conductivity 747 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 748 !!!!! LINES COMMENTED OUT UNTIL CICE MULTILAYERS BRANCH IS IMPLEMENTED 749 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 750 !! IF (heat_capacity) THEN 751 !! DO jpl = 1,ncat 752 !! CALL cice2nemo(Tn_top(:,:,jpl,:),tn_ice(:,:,jpl),'T', 1. ) 753 !! CALL cice2nemo(keffn_top(:,:,jpl,:),kn_ice(:,:,jpl),'T', 1. ) 754 !! ENDDO 755 !!! Convert surface temperature to Kelvin 756 !! tn_ice(:,:,:)=tn_ice(:,:,:)+rt0 757 !! ELSE 758 !! tn_ice(:,:,:) = 0.0 759 !! kn_ice(:,:,:) = 0.0 760 !! ENDIF 761 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 762 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 729 763 730 764 !
Note: See TracChangeset
for help on using the changeset viewer.