- Timestamp:
- 2019-12-11T09:53:24+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC
- Files:
-
- 1 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbc_oce.F90
r12154 r12166 45 45 LOGICAL , PUBLIC :: ln_dm2dc !: Daily mean to Diurnal Cycle short wave (qsr) 46 46 LOGICAL , PUBLIC :: ln_rnf !: runoffs / runoff mouths 47 LOGICAL , PUBLIC :: ln_isf !: ice shelf melting48 47 LOGICAL , PUBLIC :: ln_ssr !: Sea Surface restoring on SST and/or SSS 49 48 LOGICAL , PUBLIC :: ln_apr_dyn !: Atmospheric pressure forcing used on dynamics (ocean & ice) … … 125 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_tot !: total E-P over ocean and ice [Kg/m2/s] 126 125 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fmmflx !: freshwater budget: freezing/melting [Kg/m2/s] 127 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rnf , rnf_b !: river runoff [Kg/m2/s] 128 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwfisf , fwfisf_b !: ice shelf melting [Kg/m2/s] 129 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwficb , fwficb_b !: iceberg melting [Kg/m2/s] 130 126 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rnf , rnf_b !: river runoff [Kg/m2/s] 127 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwficb , fwficb_b !: iceberg melting [Kg/m2/s] 131 128 !! 132 129 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sbc_tsc, sbc_tsc_b !: sbc content trend [K.m/s] jpi,jpj,jpts … … 185 182 & sfx (jpi,jpj) , sfx_b(jpi,jpj) , emp_tot(jpi,jpj), fmmflx(jpi,jpj), STAT=ierr(2) ) 186 183 ! 187 ALLOCATE( fwfisf (jpi,jpj),rnf (jpi,jpj) , sbc_tsc (jpi,jpj,jpts) , qsr_hc (jpi,jpj,jpk) , &188 & fwfisf_b(jpi,jpj),rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) , &184 ALLOCATE( rnf (jpi,jpj) , sbc_tsc (jpi,jpj,jpts) , qsr_hc (jpi,jpj,jpk) , & 185 & rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) , & 189 186 & fwficb (jpi,jpj), fwficb_b(jpi,jpj), STAT=ierr(3) ) 190 187 ! -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbccpl.F90
r12154 r12166 27 27 USE sbcwave ! surface boundary condition: waves 28 28 USE phycst ! physical constants 29 USE isf_oce , ONLY : l_isfoasis, fwfisf_oasis ! ice shelf boundary condition 29 30 #if defined key_si3 30 31 USE ice ! ice variables … … 36 37 USE eosbn2 ! 37 38 USE sbcrnf , ONLY : l_rnfcpl 38 USE sbcisf , ONLY : l_isfcpl39 39 #if defined key_cice 40 40 USE ice_domain_size, only: ncat … … 474 474 srcv(jpr_icb)%clname = 'OIceberg' ; IF( TRIM( sn_rcv_icb%cldes) == 'coupled' ) srcv(jpr_icb)%laction = .TRUE. 475 475 476 IF( srcv(jpr_isf)%laction .AND. ln_isf) THEN477 l_isf cpl = .TRUE. ! -> no need to read isf in sbcisf476 IF( srcv(jpr_isf)%laction ) THEN 477 l_isfoasis = .TRUE. ! -> isf fwf comes from oasis 478 478 IF(lwp) WRITE(numout,*) 479 479 IF(lwp) WRITE(numout,*) ' iceshelf received from oasis ' 480 CALL ctl_stop('STOP','not coded') 480 481 ENDIF 481 482 ! … … 1404 1405 rnf(:,:) = rnf(:,:) + fwficb(:,:) ! iceberg added to runfofs 1405 1406 ENDIF 1406 IF( srcv(jpr_isf)%laction ) fwfisf(:,:) = - frcv(jpr_isf)%z3(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) 1407 ! 1408 ! ice shelf fwf 1409 IF( srcv(jpr_isf)%laction ) THEN 1410 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) 1411 END IF 1407 1412 1408 1413 IF( ln_mixcpl ) THEN ; emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:) … … 1707 1712 ENDIF 1708 1713 IF( srcv(jpr_isf)%laction ) THEN ! iceshelf (fwfisf <0 mean melting) 1709 fwfisf (:,:) = - frcv(jpr_isf)%z3(:,:,1)1714 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 1710 1715 ENDIF 1711 1716 … … 1746 1751 ENDIF 1747 1752 IF( srcv(jpr_isf)%laction ) THEN ! iceshelf (fwfisf <0 mean melting) 1748 fwfisf (:,:) = - frcv(jpr_isf)%z3(:,:,1)1753 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 1749 1754 ENDIF 1750 1755 ! -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcfwb.F90
r10570 r12166 17 17 USE dom_oce ! ocean space and time domain 18 18 USE sbc_oce ! surface ocean boundary condition 19 USE isf_oce , ONLY : fwfisf_cav, fwfisf_par ! ice shelf melting contribution 19 20 USE sbc_ice , ONLY : snwice_mass, snwice_mass_b, snwice_fmass 20 21 USE phycst ! physical constants 21 22 USE sbcrnf ! ocean runoffs 22 USE sbcisf ! ice shelf melting contribution23 23 USE sbcssr ! Sea-Surface damping terms 24 24 ! … … 104 104 ! 105 105 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 106 y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf (:,:) - snwice_fmass(:,:) ) )106 y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 107 107 CALL mpp_delay_sum( 'sbcfwb', 'fwb', y_fwfnow(:), z_fwfprv(:), kt == nitend - nn_fsbc + 1 ) 108 108 z_fwfprv(1) = z_fwfprv(1) / area … … 159 159 ztmsk_neg(:,:) = tmask_i(:,:) - ztmsk_pos(:,:) 160 160 ! ! fwf global mean (excluding ocean to ice/snow exchanges) 161 z_fwf = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf (:,:) - snwice_fmass(:,:) ) ) / area161 z_fwf = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 162 162 ! 163 163 IF( z_fwf < 0._wp ) THEN ! spread out over >0 erp area to increase evaporation -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcmod.F90
r12154 r12166 39 39 #endif 40 40 USE sbcice_cice ! surface boundary condition: CICE sea-ice model 41 USE sbcisf ! surface boundary condition: ice-shelf42 41 USE sbccpl ! surface boundary condition: coupled formulation 43 42 USE cpl_oasis3 ! OASIS routines for coupling … … 45 44 USE sbcrnf ! surface boundary condition: runoffs 46 45 USE sbcapr ! surface boundary condition: atmo pressure 47 USE sbcisf ! surface boundary condition: ice shelf48 46 USE sbcfwb ! surface boundary condition: freshwater budget 49 47 USE icbstp ! Icebergs … … 157 155 WRITE(numout,*) ' Patm gradient added in ocean & ice Eqs. ln_apr_dyn = ', ln_apr_dyn 158 156 WRITE(numout,*) ' runoff / runoff mouths ln_rnf = ', ln_rnf 159 WRITE(numout,*) ' iceshelf formulation ln_isf = ', ln_isf160 157 WRITE(numout,*) ' nb of iterations if land-sea-mask applied nn_lsm = ', nn_lsm 161 158 WRITE(numout,*) ' surface wave ln_wave = ', ln_wave … … 259 256 ENDIF 260 257 ! 261 262 258 IF( nn_ice == 0 ) THEN !* No sea-ice in the domain : ice fraction is always zero 263 259 IF( nn_components /= jp_iam_opa ) fr_i(:,:) = 0._wp ! except for OPA in SAS-OPA coupled case … … 354 350 IF( ln_ssr ) CALL sbc_ssr_init ! Sea-Surface Restoring initialization 355 351 ! 356 IF( ln_isf ) CALL sbc_isf_init ! Compute iceshelves357 !358 352 CALL sbc_rnf_init ! Runof initialization 359 353 ! … … 422 416 rnf_b (:,: ) = rnf (:,: ) 423 417 rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 424 ENDIF425 IF( ln_isf ) THEN426 fwfisf_b (:,: ) = fwfisf (:,: )427 risf_tsc_b(:,:,:) = risf_tsc(:,:,:)428 418 ENDIF 429 419 ! … … 479 469 IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1. ) ! ensure restartability with icebergs 480 470 ENDIF 481 482 IF( ln_isf ) CALL sbc_isf( kt ) ! compute iceshelves483 471 484 472 IF( ln_rnf ) CALL sbc_rnf( kt ) ! add runoffs to fresh water fluxes … … 585 573 ! 586 574 IF(ln_ctl) THEN ! print mean trends (used for debugging) 587 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' fr_i- : ', mask1=tmask )588 CALL prt_ctl(tab2d_1=(emp-rnf + fwfisf), clinfo1=' emp-rnf- : ', mask1=tmask )589 CALL prt_ctl(tab2d_1=(sfx-rnf + fwfisf), clinfo1=' sfx-rnf- : ', mask1=tmask )575 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' fr_i - : ', mask1=tmask ) 576 CALL prt_ctl(tab2d_1=(emp-rnf) , clinfo1=' emp-rnf - : ', mask1=tmask ) 577 CALL prt_ctl(tab2d_1=(sfx-rnf) , clinfo1=' sfx-rnf - : ', mask1=tmask ) 590 578 CALL prt_ctl(tab2d_1=qns , clinfo1=' qns - : ', mask1=tmask ) 591 579 CALL prt_ctl(tab2d_1=qsr , clinfo1=' qsr - : ', mask1=tmask ) -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcrnf.F90
r12154 r12166 19 19 USE phycst ! physical constants 20 20 USE sbc_oce ! surface boundary condition variables 21 USE sbcisf ! PM we could remove it I think22 21 USE eosbn2 ! Equation Of State 23 22 USE closea ! closed seas … … 141 140 rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rau0 142 141 END WHERE 143 WHERE( sf_t_rnf(1)%fnow(:,:,1) == -222._wp ) ! where fwf comes from melting of ice shelves or iceberg144 rnf_tsc(:,:,jp_tem) = ztfrz(:,:) * rnf(:,:) * r1_rau0 - rnf(:,:) * rLfusisf * r1_rau0_rcp145 END WHERE146 142 ELSE ! use SST as runoffs temperature 147 143 !CEOD River is fresh water so must at least be 0 unless we consider ice -
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/OCE/SBC/sbcssm.F90
r10425 r12166 60 60 ! 61 61 ! !* surface T-, U-, V- ocean level variables (T, S, depth, velocity) 62 DO jj = 1, jpj 63 DO ji = 1, jpi 64 zts(ji,jj,jp_tem) = tsn(ji,jj,mikt(ji,jj),jp_tem) 65 zts(ji,jj,jp_sal) = tsn(ji,jj,mikt(ji,jj),jp_sal) 66 END DO 67 END DO 62 zts(:,:,jp_tem) = tsn(:,:,1,jp_tem) 63 zts(:,:,jp_sal) = tsn(:,:,1,jp_sal) 68 64 ! 69 65 IF( nn_fsbc == 1 ) THEN ! Instantaneous surface fields !
Note: See TracChangeset
for help on using the changeset viewer.