- Timestamp:
- 2019-08-02T15:14:02+02:00 (5 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
r6498 r11394 22 22 USE wrk_nemo ! work arrays 23 23 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 24 USE stopack 24 25 25 26 IMPLICIT NONE … … 154 155 END DO 155 156 END DO 157 158 IF ( nn_spp_icealb > 0 ) CALL spp_gen( 1, pa_ice_cs(:,:,jl), nn_spp_icealb, rn_icealb_sd, jk_spp_alb, jl ) 159 156 160 END DO 157 161 … … 209 213 END DO 210 214 END DO 215 216 IF ( nn_spp_icealb > 0 ) CALL spp_gen( 1, pa_ice_os(:,:,jl), nn_spp_icealb, rn_icealb_sd, jk_spp_alb, jl ) 217 211 218 END DO 212 219 ! Effect of the clouds (2d order polynomial) -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r9288 r11394 51 51 USE par_ice_2 52 52 #endif 53 USE stopack 53 54 54 55 IMPLICIT NONE … … 89 90 REAL(wp) :: rn_efac ! multiplication factor for evaporation (clem) 90 91 REAL(wp) :: rn_vfac ! multiplication factor for ice/ocean velocity in the calculation of wind stress (clem) 92 REAL(wp), ALLOCATABLE, SAVE :: rn_vfac0(:,:) ! multiplication factor for ice/ocean velocity in the calculation of wind stress (clem) 91 93 REAL(wp) :: rn_zqt ! z(q,t) : height of humidity and temperature measurements 92 94 REAL(wp) :: rn_zu ! z(u) : height of wind measurements … … 198 200 sfx(:,:) = 0._wp ! salt flux; zero unless ice is present (computed in limsbc(_2).F90) 199 201 ! 202 ALLOCATE ( rn_vfac0(jpi,jpj) ) 203 rn_vfac0(:,:) = rn_vfac 204 ! 205 ENDIF 206 207 IF( nn_spp_relw > 0 ) THEN 208 rn_vfac0 = rn_vfac 209 CALL spp_gen(kt, rn_vfac0, nn_spp_relw, rn_relw_sd, jk_spp_relw ) 200 210 ENDIF 201 211 … … 291 301 DO jj = 2, jpjm1 292 302 DO ji = fs_2, fs_jpim1 ! vect. opt. 293 zwnd_i(ji,jj) = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( pu(ji-1,jj ) + pu(ji,jj) ) )294 zwnd_j(ji,jj) = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( pv(ji ,jj-1) + pv(ji,jj) ) )303 zwnd_i(ji,jj) = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac0(ji,jj) * 0.5 * ( pu(ji-1,jj ) + pu(ji,jj) ) ) 304 zwnd_j(ji,jj) = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac0(ji,jj) * 0.5 * ( pv(ji ,jj-1) + pv(ji,jj) ) ) 295 305 END DO 296 306 END DO … … 467 477 DO ji = 2, jpim1 ! B grid : NO vector opt 468 478 ! ... scalar wind at I-point (fld being at T-point) 469 zwndi_f = 0.25 * ( sf(jp_wndi)%fnow(ji-1,jj ,1) + sf(jp_wndi)%fnow(ji ,jj ,1) & 470 & + sf(jp_wndi)%fnow(ji-1,jj-1,1) + sf(jp_wndi)%fnow(ji ,jj-1,1) ) - rn_vfac * u_ice(ji,jj) 471 zwndj_f = 0.25 * ( sf(jp_wndj)%fnow(ji-1,jj ,1) + sf(jp_wndj)%fnow(ji ,jj ,1) & 472 & + sf(jp_wndj)%fnow(ji-1,jj-1,1) + sf(jp_wndj)%fnow(ji ,jj-1,1) ) - rn_vfac * v_ice(ji,jj) 479 zwndi_f = 0.25 * ( sf(jp_wndi)%fnow(ji-1,jj ,1) + sf(jp_wndi)%fnow(ji ,jj ,1) & 480 & + sf(jp_wndi)%fnow(ji-1,jj-1,1) + sf(jp_wndi)%fnow(ji ,jj-1,1) ) & 481 & - rn_vfac0(ji,jj) * u_ice(ji,jj) 482 zwndj_f = 0.25 * ( sf(jp_wndj)%fnow(ji-1,jj ,1) + sf(jp_wndj)%fnow(ji ,jj ,1) & 483 & + sf(jp_wndj)%fnow(ji-1,jj-1,1) + sf(jp_wndj)%fnow(ji ,jj-1,1) ) & 484 & - rn_vfac0(ji,jj) * v_ice(ji,jj) 473 485 zwnorm_f = zcoef_wnorm * SQRT( zwndi_f * zwndi_f + zwndj_f * zwndj_f ) 474 486 ! ... ice stress at I-point … … 476 488 vtau_ice(ji,jj) = zwnorm_f * zwndj_f 477 489 ! ... scalar wind at T-point (fld being at T-point) 478 zwndi_t = sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.25 * ( u_ice(ji,jj+1) + u_ice(ji+1,jj+1) & 479 & + u_ice(ji,jj ) + u_ice(ji+1,jj ) ) 480 zwndj_t = sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.25 * ( v_ice(ji,jj+1) + v_ice(ji+1,jj+1) & 481 & + v_ice(ji,jj ) + v_ice(ji+1,jj ) ) 490 zwndi_t = sf(jp_wndi)%fnow(ji,jj,1) & 491 & - rn_vfac0(ji,jj) * 0.25 * ( u_ice(ji,jj+1) + u_ice(ji+1,jj+1) & 492 & + u_ice(ji,jj ) + u_ice(ji+1,jj ) ) 493 zwndj_t = sf(jp_wndj)%fnow(ji,jj,1) & 494 & - rn_vfac0(ji,jj) * 0.25 * ( v_ice(ji,jj+1) + v_ice(ji+1,jj+1) & 495 & + v_ice(ji,jj ) + v_ice(ji+1,jj ) ) 482 496 wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 483 497 END DO … … 490 504 DO jj = 2, jpj 491 505 DO ji = fs_2, jpi ! vect. opt. 492 zwndi_t = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( u_ice(ji-1,jj ) + u_ice(ji,jj) ) )493 zwndj_t = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( v_ice(ji ,jj-1) + v_ice(ji,jj) ) )506 zwndi_t = ( sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac0(ji,jj) * 0.5 * ( u_ice(ji-1,jj ) + u_ice(ji,jj) ) ) 507 zwndj_t = ( sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac0(ji,jj) * 0.5 * ( v_ice(ji ,jj-1) + v_ice(ji,jj) ) ) 494 508 wndm_ice(ji,jj) = SQRT( zwndi_t * zwndi_t + zwndj_t * zwndj_t ) * tmask(ji,jj,1) 495 509 END DO … … 497 511 DO jj = 2, jpjm1 498 512 DO ji = fs_2, fs_jpim1 ! vect. opt. 499 utau_ice(ji,jj) = zcoef_wnorm2 * ( wndm_ice(ji+1,jj ) + wndm_ice(ji,jj) ) & 500 & * ( 0.5 * (sf(jp_wndi)%fnow(ji+1,jj,1) + sf(jp_wndi)%fnow(ji,jj,1) ) - rn_vfac * u_ice(ji,jj) ) 501 vtau_ice(ji,jj) = zcoef_wnorm2 * ( wndm_ice(ji,jj+1 ) + wndm_ice(ji,jj) ) & 502 & * ( 0.5 * (sf(jp_wndj)%fnow(ji,jj+1,1) + sf(jp_wndj)%fnow(ji,jj,1) ) - rn_vfac * v_ice(ji,jj) ) 513 utau_ice(ji,jj) = zcoef_wnorm2 * ( wndm_ice(ji+1,jj ) + wndm_ice(ji,jj) ) & 514 & * ( 0.5 * (sf(jp_wndi)%fnow(ji+1,jj,1) + sf(jp_wndi)%fnow(ji,jj,1) ) & 515 & - rn_vfac0(ji,jj) * u_ice(ji,jj) ) 516 vtau_ice(ji,jj) = zcoef_wnorm2 * ( wndm_ice(ji,jj+1 ) + wndm_ice(ji,jj) ) & 517 & * ( 0.5 * (sf(jp_wndj)%fnow(ji,jj+1,1) + sf(jp_wndj)%fnow(ji,jj,1) ) & 518 & - rn_vfac0(ji,jj) * v_ice(ji,jj) ) 503 519 END DO 504 520 END DO -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r8302 r11394 53 53 REAL(wp) , PUBLIC :: rn_avt_rnf !: runoffs, value of the additional vertical mixing coef. [m2/s] 54 54 REAL(wp) , PUBLIC :: rn_rfact !: multiplicative factor for runoff 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rn_avt_rnf0 55 56 56 57 LOGICAL , PUBLIC :: l_rnfcpl = .false. ! runoffs recieved from oasis … … 447 448 ! ! - mixed upstream-centered (ln_traadv_cen2=T) 448 449 ! 450 ALLOCATE ( rn_avt_rnf0(jpi,jpj) ) 451 rn_avt_rnf0(:,:) = rn_avt_rnf 452 ! 449 453 IF ( ln_rnf_depth ) CALL ctl_warn( 'sbc_rnf_init: increased mixing turned on but effects may already', & 450 454 & 'be spread through depth by ln_rnf_depth' ) -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssr.F90
r6486 r11394 25 25 USE timing ! Timing 26 26 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 27 USE stopack 28 USE wrk_nemo ! Memory Allocation 27 29 28 30 IMPLICIT NONE … … 75 77 REAL(wp) :: zerp ! local scalar for evaporation damping 76 78 REAL(wp) :: zqrp ! local scalar for heat flux damping 77 REAL(wp) :: zsrp ! local scalar for unit conversion of rn_deds factor78 79 REAL(wp) :: zerp_bnd ! local scalar for unit conversion of rn_epr_max factor 80 REAL(wp), POINTER, DIMENSION(:,:) :: rn_dqdt_s, zsrp 79 81 INTEGER :: ierror ! return error code 80 82 !! … … 95 97 ! 96 98 IF( nn_sstr == 1 ) THEN !* Temperature restoring term 99 100 CALL wrk_alloc( jpi, jpj, rn_dqdt_s) 101 rn_dqdt_s=rn_dqdt 102 103 IF( nn_spp_dqdt > 0 ) CALL spp_gen(kt, rn_dqdt_s,nn_spp_dqdt,rn_dqdt_sd,jk_spp_dqdt ) 97 104 DO jj = 1, jpj 98 105 DO ji = 1, jpi 99 zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) )106 zqrp = rn_dqdt_s(ji,jj) * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) 100 107 qns(ji,jj) = qns(ji,jj) + zqrp 101 108 qrp(ji,jj) = zqrp … … 103 110 END DO 104 111 CALL iom_put( "qrp", qrp ) ! heat flux damping 112 CALL wrk_dealloc( jpi, jpj, rn_dqdt_s ) 105 113 ENDIF 106 114 ! 107 115 IF( nn_sssr == 1 ) THEN !* Salinity damping term (salt flux only (sfx)) 108 zsrp = rn_deds / rday ! from [mm/day] to [kg/m2/s] 116 CALL wrk_alloc( jpi, jpj, zsrp) 117 zsrp = rn_deds 118 IF( nn_spp_dedt > 0 ) CALL spp_gen(kt, zsrp, nn_spp_dedt, rn_dedt_sd, jk_spp_deds ) 109 119 !CDIR COLLAPSE 110 120 DO jj = 1, jpj 111 121 DO ji = 1, jpi 112 zerp = zsrp* ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths122 zerp = (zsrp(ji,jj)/rday) * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths 113 123 & * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) ) 114 124 sfx(ji,jj) = sfx(ji,jj) + zerp ! salt flux … … 117 127 END DO 118 128 CALL iom_put( "erp", erp ) ! freshwater flux damping 129 CALL wrk_dealloc( jpi,jpj, zsrp ) 119 130 ! 120 131 ELSEIF( nn_sssr == 2 ) THEN !* Salinity damping term (volume flux (emp) and associated heat flux (qns) 121 zsrp = rn_deds / rday ! from [mm/day] to [kg/m2/s] 132 CALL wrk_alloc( jpi, jpj, zsrp) 133 zsrp = rn_deds 134 IF( nn_spp_dedt > 0 ) CALL spp_gen(kt, zsrp, nn_spp_dedt, rn_dedt_sd, jk_spp_deds ) 122 135 zerp_bnd = rn_sssr_bnd / rday ! - - 123 136 !CDIR COLLAPSE 124 137 DO jj = 1, jpj 125 138 DO ji = 1, jpi 126 zerp = zsrp* ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths139 zerp = (zsrp(ji,jj)/rday) * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths 127 140 & * ( sss_m(ji,jj) - sf_sss(1)%fnow(ji,jj,1) ) & 128 141 & / MAX( sss_m(ji,jj), 1.e-20 ) … … 134 147 END DO 135 148 CALL iom_put( "erp", erp ) ! freshwater flux damping 149 CALL wrk_dealloc( jpi,jpj,zsrp ) 136 150 ENDIF 137 151 !
Note: See TracChangeset
for help on using the changeset viewer.