Changeset 11394
- Timestamp:
- 2019-08-02T15:14:02+02:00 (5 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 18 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
r6486 r11394 30 30 USE wrk_nemo ! Memory Allocation 31 31 USE timing ! Timing 32 USE stopack 32 33 33 34 IMPLICIT NONE … … 38 39 39 40 INTEGER :: nldf = -2 ! type of lateral diffusion used defined from ln_dynldf_... namlist logicals) 41 42 #if defined key_dynldf_c3d 43 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ahm10,ahm20,ahm30,ahm40 44 #endif 45 #if defined key_dynldf_c2d 46 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,: ) :: ahm10,ahm20,ahm30,ahm40 47 #endif 40 48 41 49 !! * Substitutions … … 67 75 ztrdv(:,:,:) = va(:,:,:) 68 76 ENDIF 77 78 #if defined key_dynldf_c3d 79 IF( kt .eq. nit000 .and. (nn_spp_ahm1+nn_spp_ahm2) .gt. 0 ) THEN 80 ALLOCATE ( ahm10(jpi,jpj,jpk), ahm20(jpi,jpj,jpk) ) 81 ALLOCATE ( ahm30(jpi,jpj,jpk), ahm40(jpi,jpj,jpk) ) 82 ahm10 = ahm1 83 ahm20 = ahm2 84 ahm30 = ahm3 85 ahm40 = ahm4 86 ENDIF 87 #endif 88 #if defined key_dynldf_c2d 89 IF( kt .eq. nit000 .and. (nn_spp_ahm1+nn_spp_ahm2) .gt. 0 ) THEN 90 ALLOCATE ( ahm10(jpi,jpj), ahm20(jpi,jpj) ) 91 ALLOCATE ( ahm30(jpi,jpj), ahm40(jpi,jpj) ) 92 ahm10 = ahm1 93 ahm20 = ahm2 94 ahm30 = ahm3 95 ahm40 = ahm4 96 ENDIF 97 #endif 98 99 #if defined key_traldf_c3d || defined key_traldf_c2d 100 IF( nn_spp_ahm1 .GT. 0) THEN 101 IF( ln_dynldf_lap ) THEN 102 ahm1 = ahm10 103 CALL spp_ahm(kt,ahm1,nn_spp_ahm1,rn_ahm1_sd,jk_spp_ahm1) 104 ENDIF 105 IF( ln_dynldf_bilap ) THEN 106 ahm3 = ahm30 107 CALL spp_ahm(kt,ahm3,nn_spp_ahm1,rn_ahm1_sd,jk_spp_ahm3) 108 ENDIF 109 ENDIF 110 IF( nn_spp_ahm2 .GT. 0) THEN 111 IF( ln_dynldf_lap ) THEN 112 ahm2 = ahm20 113 CALL spp_ahm(kt,ahm2,nn_spp_ahm2,rn_ahm2_sd,jk_spp_ahm2) 114 ENDIF 115 IF( ln_dynldf_bilap ) THEN 116 ahm4 = ahm40 117 CALL spp_ahm(kt,ahm4,nn_spp_ahm2,rn_ahm2_sd,jk_spp_ahm4) 118 ENDIF 119 ENDIF 120 #endif 69 121 70 122 SELECT CASE ( nldf ) ! compute lateral mixing trend and add it to the general trend -
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 ! -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90
r6486 r11394 28 28 USE wrk_nemo ! Memory Allocation 29 29 USE timing ! Timing 30 USE stopack 30 31 31 32 IMPLICIT NONE … … 41 42 42 43 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: qgh_trd0 ! geothermal heating trend 44 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: qgh_trd1 ! geothermal heating trend 43 45 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_qgh ! structure of input qgh (file informations, fields read) 44 46 … … 89 91 ! 90 92 ! ! Add the geothermal heat flux trend on temperature 93 94 IF( nn_spp_geot .GT. 0) THEN 95 qgh_trd1 = qgh_trd0 96 CALL spp_gen(kt, qgh_trd0, nn_spp_geot, rn_geot_sd, jk_spp_geot) 97 ENDIF 91 98 DO jj = 2, jpjm1 92 99 DO ji = 2, jpim1 93 100 ik = mbkt(ji,jj) 94 zqgh_trd = qgh_trd 0(ji,jj) / fse3t(ji,jj,ik)101 zqgh_trd = qgh_trd1(ji,jj) / fse3t(ji,jj,ik) 95 102 tsa(ji,jj,ik,jp_tem) = tsa(ji,jj,ik,jp_tem) + zqgh_trd 96 103 END DO … … 163 170 ! 164 171 ALLOCATE( qgh_trd0(jpi,jpj) ) ! allocation 172 ALLOCATE( qgh_trd1(jpi,jpj) ) ! allocation 165 173 ! 166 174 SELECT CASE ( nn_geoflx ) ! geothermal heat flux / (rauO * Cp) … … 192 200 ! 193 201 END SELECT 202 qgh_trd1 = qgh_trd0 194 203 ! 195 204 ELSE -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/TRA/trabbl.F90
r7771 r11394 39 39 USE timing ! Timing 40 40 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 41 USE stopack 41 42 42 43 IMPLICIT NONE … … 67 68 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC :: mgrhu , mgrhv ! = +/-1, sign of grad(H) in u-(v-)direction (PUBLIC for TAM) 68 69 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ahu_bbl_0, ahv_bbl_0 ! diffusive bbl flux coefficients at u and v-points 70 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ahu_bbl_1, ahv_bbl_1 ! diffusive bbl flux coefficients at u and v-points 69 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC :: e3u_bbl_0, e3v_bbl_0 ! thichness of the bbl (e3) at u and v-points (PUBLIC for TAM) 70 72 … … 86 88 & vtr_bbl (jpi,jpj) , ahv_bbl (jpi,jpj) , mbkv_d (jpi,jpj) , mgrhv(jpi,jpj) , & 87 89 & ahu_bbl_0(jpi,jpj) , ahv_bbl_0(jpi,jpj) , & 90 & ahu_bbl_1(jpi,jpj) , ahv_bbl_1(jpi,jpj) , & 88 91 & e3u_bbl_0(jpi,jpj) , e3v_bbl_0(jpi,jpj) , STAT=tra_bbl_alloc ) 89 92 ! … … 195 198 ALLOCATE(zptb(1:jpi, 1:jpj)) 196 199 ! 200 ahu_bbl_1 = ahu_bbl 201 IF( nn_spp_ahubbl .GT. 0 ) THEN 202 CALL spp_gen(1 , ahu_bbl_1, nn_spp_ahubbl, rn_ahubbl_sd, jk_spp_ahubbl ) 203 ENDIF 204 ahv_bbl_1 = ahv_bbl 205 IF( nn_spp_ahvbbl .GT. 0 ) THEN 206 CALL spp_gen(1 , ahv_bbl_1, nn_spp_ahvbbl, rn_ahvbbl_sd, jk_spp_ahvbbl ) 207 ENDIF 208 ! 197 209 DO jn = 1, kjpt ! tracer loop 198 210 ! ! =========== … … 209 221 zbtr = r1_e12t(ji,jj) / fse3t(ji,jj,ik) 210 222 pta(ji,jj,ik,jn) = pta(ji,jj,ik,jn) & 211 & + ( ahu_bbl (ji ,jj ) * ( zptb(ji+1,jj ) - zptb(ji ,jj ) ) &212 & - ahu_bbl (ji-1,jj ) * ( zptb(ji ,jj ) - zptb(ji-1,jj ) ) &213 & + ahv_bbl (ji ,jj ) * ( zptb(ji ,jj+1) - zptb(ji ,jj ) ) &214 & - ahv_bbl (ji ,jj-1) * ( zptb(ji ,jj ) - zptb(ji ,jj-1) ) ) * zbtr223 & + ( ahu_bbl_1(ji ,jj ) * ( zptb(ji+1,jj ) - zptb(ji ,jj ) ) & 224 & - ahu_bbl_1(ji-1,jj ) * ( zptb(ji ,jj ) - zptb(ji-1,jj ) ) & 225 & + ahv_bbl_1(ji ,jj ) * ( zptb(ji ,jj+1) - zptb(ji ,jj ) ) & 226 & - ahv_bbl_1(ji ,jj-1) * ( zptb(ji ,jj ) - zptb(ji ,jj-1) ) ) * zbtr 215 227 END DO 216 228 END DO … … 549 561 zmbk(:,:) = REAL( mbkv_d(:,:), wp ) ; CALL lbc_lnk(zmbk,'V',1.) ; mbkv_d(:,:) = MAX( INT( zmbk(:,:) ), 1 ) 550 562 551 !* sign of grad(H) at u- and v-points 552 mgrhu( jpi,:) = 0 ; mgrhu(:,jpj) = 0 ; mgrhv(jpi,:) = 0 ; mgrhv(:,jpj) = 0563 !* sign of grad(H) at u- and v-points; zero if grad(H) = 0 564 mgrhu(:,:) = 0 ; mgrhv(:,:) = 0 553 565 DO jj = 1, jpjm1 554 566 DO ji = 1, jpim1 555 mgrhu(ji,jj) = INT( SIGN( 1.e0, gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) ) ) 556 mgrhv(ji,jj) = INT( SIGN( 1.e0, gdept_0(ji,jj+1,mbkt(ji,jj+1)) - gdept_0(ji,jj,mbkt(ji,jj)) ) ) 567 IF( gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) /= 0._wp ) THEN 568 mgrhu(ji,jj) = INT( SIGN( 1.e0, gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) ) ) 569 ENDIF 570 ! 571 IF( gdept_0(ji,jj+1,mbkt(ji,jj+1)) - gdept_0(ji,jj,mbkt(ji,jj)) /= 0._wp ) THEN 572 mgrhv(ji,jj) = INT( SIGN( 1.e0, gdept_0(ji,jj+1,mbkt(ji,jj+1)) - gdept_0(ji,jj,mbkt(ji,jj)) ) ) 573 ENDIF 557 574 END DO 558 575 END DO … … 569 586 ahu_bbl_0(:,:) = rn_ahtbbl * e2u(:,:) * e3u_bbl_0(:,:) / e1u(:,:) * umask(:,:,1) 570 587 ahv_bbl_0(:,:) = rn_ahtbbl * e1v(:,:) * e3v_bbl_0(:,:) / e2v(:,:) * vmask(:,:,1) 571 572 588 573 589 IF( cp_cfg == "orca" ) THEN !* ORCA configuration : regional enhancement of ah_bbl -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90
r6498 r11394 32 32 USE wrk_nemo ! Memory allocation 33 33 USE timing ! Timing 34 USE stopack 34 35 35 36 IMPLICIT NONE … … 43 44 REAL, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: t0_ldf, s0_ldf !: lateral diffusion trends of T & S for a cst profile 44 45 ! ! (key_traldf_ano only) 46 #if defined key_traldf_c3d 47 REAL, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: ahtu0,ahtv0,ahtw0,ahtt0 48 #endif 49 #if defined key_traldf_c2d 50 REAL, SAVE, ALLOCATABLE, DIMENSION(:,: ) :: ahtu0,ahtv0,ahtw0,ahtt0 51 #endif 45 52 46 53 !! * Substitutions … … 75 82 ztrds(:,:,:) = tsa(:,:,:,jp_sal) 76 83 ENDIF 84 85 #if defined key_traldf_c3d 86 IF( kt .eq. nit000 .and. (nn_spp_ahtu+nn_spp_ahtv+nn_spp_ahtw+nn_spp_ahtt) .gt. 0 ) THEN 87 ALLOCATE ( ahtu0(jpi,jpj,jpk), ahtv0(jpi,jpj,jpk) ) 88 ALLOCATE ( ahtt0(jpi,jpj,jpk), ahtw0(jpi,jpj,jpk) ) 89 ahtu0 = ahtu 90 ahtv0 = ahtv 91 ahtw0 = ahtw 92 ahtt0 = ahtt 93 ENDIF 94 #endif 95 #if defined key_traldf_c2d 96 IF( kt .eq. nit000 .and. (nn_spp_ahtu+nn_spp_ahtv+nn_spp_ahtw+nn_spp_ahtt) .gt. 0 ) THEN 97 ALLOCATE ( ahtu0(jpi,jpj), ahtv0(jpi,jpj) ) 98 ALLOCATE ( ahtt0(jpi,jpj), ahtw0(jpi,jpj) ) 99 ahtu0 = ahtu 100 ahtv0 = ahtv 101 ahtw0 = ahtw 102 ahtt0 = ahtt 103 ENDIF 104 #endif 105 #if defined key_traldf_c3d || defined key_traldf_c2d 106 IF( nn_spp_ahtu .GT. 0) THEN 107 ahtu = ahtu0 108 CALL spp_aht(kt,ahtu,nn_spp_ahtu,rn_ahtu_sd,jk_spp_ahtu) 109 ENDIF 110 IF( nn_spp_ahtv .GT. 0) THEN 111 ahtv = ahtv0 112 CALL spp_aht(kt,ahtv,nn_spp_ahtv,rn_ahtv_sd,jk_spp_ahtv) 113 ENDIF 114 IF( nn_spp_ahtw .GT. 0) THEN 115 ahtw = ahtw0 116 CALL spp_aht(kt,ahtw,nn_spp_ahtw,rn_ahtw_sd,jk_spp_ahtw) 117 ENDIF 118 IF( nn_spp_ahtt .GT. 0) THEN 119 ahtt = ahtt0 120 CALL spp_aht(kt,ahtt,nn_spp_ahtt,rn_ahtt_sd,jk_spp_ahtt) 121 ENDIF 122 #endif 77 123 78 124 SELECT CASE ( nldf ) ! compute lateral mixing trend and add it to the general trend … … 215 261 IF( ierr == 1 ) CALL ctl_stop( ' iso-level in z-coordinate - partial step, not allowed' ) 216 262 IF( ierr == 2 ) CALL ctl_stop( ' isoneutral bilaplacian operator does not exist' ) 263 IF( ln_traldf_hor .AND. ln_traldf_grif ) & 264 & CALL ctl_stop( ' horizontal operator and Griffies triads not available; sitch to isoneutral operator' ) 217 265 IF( ln_traldf_grif .AND. ln_isfcav ) & 218 266 CALL ctl_stop( ' ice shelf and traldf_grif not tested') -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r6498 r11394 33 33 USE wrk_nemo ! Memory Allocation 34 34 USE timing ! Timing 35 USE stopack 35 36 36 37 IMPLICIT NONE … … 52 53 53 54 ! Module variables 54 REAL(wp) :: xsi0r!: inverse of rn_si055 REAL(wp), ALLOCATABLE :: xsi0r(:,:) !: inverse of rn_si0 55 56 REAL(wp) :: xsi1r !: inverse of rn_si1 56 57 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) … … 182 183 ! ! ============================================== ! 183 184 ! 184 ! ! ------------------------- ! 185 ! 186 IF( nn_spp_qsi0 > 0 ) THEN 187 xsi0r = rn_si0 188 CALL spp_gen(kt, xsi0r, nn_spp_qsi0, rn_qsi0_sd, jk_spp_qsi0 ) 189 xsi0r = 1.e0 / xsi0r 190 ENDIF 191 ! ! ------------------------- ! 185 192 IF( ln_qsr_rgb) THEN ! R-G-B light penetration ! 186 193 ! ! ------------------------- ! … … 251 258 !CDIR NOVERRCHK 252 259 DO ji = 1, jpi 253 zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * xsi0r 260 zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * xsi0r(ji,jj) ) 254 261 zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * zekb(ji,jj) ) 255 262 zc2 = ze2(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * zekg(ji,jj) ) … … 263 270 END DO 264 271 END DO 272 ! clem: store attenuation coefficient of the first ocean level 273 IF ( ln_qsr_ice ) THEN 274 DO jj = 1, jpj 275 DO ji = 1, jpi 276 zzc0 = rn_abs * EXP( - fse3t(ji,jj,1) * xsi0r(ji,jj) ) 277 zzc1 = zcoef * EXP( - fse3t(ji,jj,1) * zekb(ji,jj) ) 278 zzc2 = zcoef * EXP( - fse3t(ji,jj,1) * zekg(ji,jj) ) 279 zzc3 = zcoef * EXP( - fse3t(ji,jj,1) * zekr(ji,jj) ) 280 fraqsr_1lev(ji,jj) = 1.0 - ( zzc0 + zzc1 + zzc2 + zzc3 ) * tmask(ji,jj,2) 281 END DO 282 END DO 283 ENDIF 265 284 ! 266 285 DO jk = 1, nksr ! compute and add qsr trend to ta … … 310 329 ! ! ------------------------- ! 311 330 ! 312 IF( lk_vvl ) THEN !* variable volume 331 IF( lk_vvl .OR. nn_spp_qsi0 > 0 ) THEN !* variable volume 332 313 333 zz0 = rn_abs * r1_rau0_rcp 314 334 zz1 = ( 1. - rn_abs ) * r1_rau0_rcp … … 316 336 DO jj = 1, jpj 317 337 DO ji = 1, jpi 318 zc0 = zz0 * EXP( -fsdepw(ji,jj,jk )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk )*xsi1r )319 zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r )338 zc0 = zz0 * EXP( -fsdepw(ji,jj,jk )*xsi0r(ji,jj) ) + zz1 * EXP( -fsdepw(ji,jj,jk )*xsi1r ) 339 zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r(ji,jj) ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r ) 320 340 qsr_hc(ji,jj,jk) = qsr(ji,jj) * ( zc0*tmask(ji,jj,jk) - zc1*tmask(ji,jj,jk+1) ) 321 341 END DO … … 326 346 DO jj = 1, jpj 327 347 DO ji = 1, jpi 328 zc0 = zz0 * EXP( -fsdepw(ji,jj,1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,1)*xsi1r )329 zc1 = zz0 * EXP( -fsdepw(ji,jj,2)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,2)*xsi1r )348 zc0 = zz0 * EXP( -fsdepw(ji,jj,1)*xsi0r(ji,jj) ) + zz1 * EXP( -fsdepw(ji,jj,1)*xsi1r ) 349 zc1 = zz0 * EXP( -fsdepw(ji,jj,2)*xsi0r(ji,jj) ) + zz1 * EXP( -fsdepw(ji,jj,2)*xsi1r ) 330 350 fraqsr_1lev(ji,jj) = ( zc0*tmask(ji,jj,1) - zc1*tmask(ji,jj,2) ) / r1_rau0_rcp 331 351 END DO … … 490 510 ! ! ===================================== ! 491 511 ! 512 ALLOCATE( xsi0r(jpi,jpj) ) 492 513 xsi0r = 1.e0 / rn_si0 493 514 xsi1r = 1.e0 / rn_si1 … … 544 565 !CDIR NOVERRCHK 545 566 DO ji = 1, jpi 546 zc0 = ze0(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * xsi0r 567 zc0 = ze0(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * xsi0r(ji,jj) ) 547 568 zc1 = ze1(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekb(ji,jj) ) 548 569 zc2 = ze2(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * zekg(ji,jj) ) … … 585 606 DO jj = 1, jpj ! top 400 meters 586 607 DO ji = 1, jpi 587 zc0 = zz0 * EXP( -fsdepw(ji,jj,jk )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk )*xsi1r )588 zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r )608 zc0 = zz0 * EXP( -fsdepw(ji,jj,jk )*xsi0r(ji,jj) ) + zz1 * EXP( -fsdepw(ji,jj,jk )*xsi1r ) 609 zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r(ji,jj) ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r ) 589 610 etot3(ji,jj,jk) = ( zc0 * tmask(ji,jj,jk) - zc1 * tmask(ji,jj,jk+1) ) * tmask(ji,jj,1) 590 611 END DO -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/TRD/trddyn.F90
r6486 r11394 29 29 USE lib_mpp ! MPP library 30 30 USE wrk_nemo ! Memory allocation 31 USE stopack 31 32 32 33 IMPLICIT NONE … … 68 69 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 69 70 IF( ln_dyn_trd ) CALL trd_dyn_iom( putrd, pvtrd, ktrd, kt ) 71 IF( ln_dyn_trd .AND. ln_sppt_dyn ) CALL dyn_sppt_collect( putrd, pvtrd, ktrd, kt ) 70 72 71 73 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
r8104 r11394 29 29 USE iom ! I/O manager library 30 30 USE lib_mpp ! MPP library 31 USE stopack 31 32 USE wrk_nemo ! Memory allocation 32 33 … … 249 250 ! ! 3D output of tracers trends using IOM interface 250 251 IF( ln_tra_trd ) CALL trd_tra_iom ( ptrdx, ptrdy, ktrd, kt ) 251 252 ! ! Integral Constraints Properties for tracers trends !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 252 IF( ln_tra_trd .AND. ln_sppt_tra ) CALL tra_sppt_collect( ptrdx, ptrdy, ktrd, kt ) 253 254 ! Integral Constraints Properties for tracers trends !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 253 255 IF( ln_glo_trd ) CALL trd_glo( ptrdx, ptrdy, ktrd, 'TRA', kt ) 254 256 -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90
r6486 r11394 26 26 USE wrk_nemo ! Memory Allocation 27 27 USE phycst, ONLY: vkarmn 28 USE stopack 28 29 29 30 IMPLICIT NONE … … 52 53 REAL(wp), PUBLIC :: rn_tfrz0 ! bottom roughness for loglayer bfr coeff (PUBLIC for TAM) 53 54 LOGICAL , PUBLIC :: ln_bfrimp ! logical switch for implicit bottom friction 54 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC :: bfrcoef2d, tfrcoef2d ! 2D bottom/top drag coefficient (PUBLIC for TAM)55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:), PUBLIC :: bfrcoef2d, tfrcoef2d,bfrcoef2d0 ! 2D bottom/top drag coefficient (PUBLIC for TAM) 55 56 56 57 !! * Substitutions … … 68 69 !! *** FUNCTION zdf_bfr_alloc *** 69 70 !!---------------------------------------------------------------------- 70 ALLOCATE( bfrcoef2d(jpi,jpj), tfrcoef2d(jpi,jpj), STAT=zdf_bfr_alloc )71 ALLOCATE( bfrcoef2d(jpi,jpj), tfrcoef2d(jpi,jpj), bfrcoef2d0(jpi,jpj),STAT=zdf_bfr_alloc ) 71 72 ! 72 73 IF( lk_mpp ) CALL mpp_sum ( zdf_bfr_alloc ) … … 105 106 WRITE(numout,*) 'zdf_bfr : Set bottom friction coefficient (non-linear case)' 106 107 WRITE(numout,*) '~~~~~~~~' 108 ENDIF 109 ! 110 IF( nn_spp_bfr > 0 ) THEN 111 bfrcoef2d = bfrcoef2d0 112 CALL spp_gen(kt, bfrcoef2d, nn_spp_bfr, rn_bfr_sd, jk_spp_bfr) 107 113 ENDIF 108 114 ! … … 486 492 ENDIF 487 493 ! 494 bfrcoef2d0(:,:) = bfrcoef2d(:,:) 488 495 IF( nn_timing == 1 ) CALL timing_stop('zdf_bfr_init') 489 496 ! -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfevd.F90
r7061 r11394 25 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 26 26 USE timing ! Timing 27 USE stopack 27 28 28 29 IMPLICIT NONE … … 30 31 31 32 PUBLIC zdf_evd ! called by step.F90 33 REAL, SAVE, ALLOCATABLE, DIMENSION(:,:) :: rn_avevd0 32 34 33 35 !! * Substitutions … … 69 71 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 70 72 IF(lwp) WRITE(numout,*) 73 ALLOCATE ( rn_avevd0(jpi,jpj) ) 74 rn_avevd0(:,:) = rn_avevd 71 75 ENDIF 72 76 73 77 zavt_evd(:,:,:) = avt(:,:,:) ! set avt prior to evd application 78 79 IF(nn_spp_aevd.GT.0) THEN 80 rn_avevd0(:,:) = rn_avevd 81 CALL spp_gen(kt, rn_avevd0, nn_spp_aevd, rn_aevd_sd, jk_spp_aevd) 82 ENDIF 74 83 75 84 SELECT CASE ( nn_evdm ) … … 88 97 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 89 98 #endif 90 avt (ji ,jj ,jk) = rn_avevd * tmask(ji ,jj ,jk)91 avm (ji ,jj ,jk) = rn_avevd * tmask(ji ,jj ,jk)92 avmu(ji ,jj ,jk) = rn_avevd * umask(ji ,jj ,jk)93 avmu(ji-1,jj ,jk) = rn_avevd * umask(ji-1,jj ,jk)94 avmv(ji ,jj ,jk) = rn_avevd * vmask(ji ,jj ,jk)95 avmv(ji ,jj-1,jk) = rn_avevd * vmask(ji ,jj-1,jk)99 avt (ji ,jj ,jk) = rn_avevd0(ji,jj) * tmask(ji ,jj ,jk) 100 avm (ji ,jj ,jk) = rn_avevd0(ji,jj) * tmask(ji ,jj ,jk) 101 avmu(ji ,jj ,jk) = rn_avevd0(ji,jj) * umask(ji ,jj ,jk) 102 avmu(ji-1,jj ,jk) = rn_avevd0(ji,jj) * umask(ji-1,jj ,jk) 103 avmv(ji ,jj ,jk) = rn_avevd0(ji,jj) * vmask(ji ,jj ,jk) 104 avmv(ji ,jj-1,jk) = rn_avevd0(ji,jj) * vmask(ji ,jj-1,jk) 96 105 ENDIF 97 106 END DO … … 115 124 IF( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) & 116 125 #endif 117 avt(ji,jj,jk) = rn_avevd * tmask(ji,jj,jk)126 avt(ji,jj,jk) = rn_avevd0(ji,jj) * tmask(ji,jj,jk) 118 127 END DO 119 128 END DO -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r6487 r11394 32 32 USE timing ! Timing 33 33 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 34 USE stopack 34 35 35 36 IMPLICIT NONE … … 806 807 END DO 807 808 END DO 809 IF(nn_spp_avt > 0 ) CALL spp_gen(kt,avt(:,:,jk),nn_spp_avt,rn_avt_sd,jk) 810 IF(nn_spp_avm > 0 ) CALL spp_gen(kt,avm(:,:,jk),nn_spp_avm,rn_avm_sd,jk) 808 811 END DO 809 812 ! -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r6498 r11394 57 57 USE agrif_opa_update 58 58 #endif 59 60 59 USE stopack 61 60 62 61 IMPLICIT NONE … … 93 92 REAL(wp) :: rhftau_scl = 1.0_wp ! scale factor applied to HF part of taum (nn_etau=3) 94 93 94 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: en !: now turbulent kinetic energy [m2/s2] 95 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: rn_lc0, rn_ediff0, rn_ediss0, rn_ebb0, rn_efr0 96 95 97 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: htau ! depth of tke penetration (nn_htau) 96 98 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e_niw !: TKE budget- near-inertial waves term 97 99 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: efr ! surface boundary condition for nn_etau = 4 98 100 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dissl ! now mixing lenght of dissipation 101 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_k , avm_k ! not enhanced Kz 102 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avmu_k, avmv_k ! not enhanced Kz 99 103 #if defined key_c1d 100 104 ! !!** 1D cfg only ** ('key_c1d') … … 184 188 avmu(:,:,:) = avmu_k(:,:,:) 185 189 avmv(:,:,:) = avmv_k(:,:,:) 186 ENDIF 190 ENDIF 191 ! 192 IF( nn_spp_tkelc > 0 ) THEN 193 rn_lc0 = rn_lc 194 CALL spp_gen(kt,rn_lc0,nn_spp_tkelc,rn_tkelc_sd, jk_spp_tkelc ) 195 ENDIF 196 IF( nn_spp_tkedf > 0 ) THEN 197 rn_ediff0 = rn_ediff 198 CALL spp_gen(kt,rn_ediff0,nn_spp_tkedf,rn_tkedf_sd, jk_spp_tkedf ) 199 ENDIF 200 IF( nn_spp_tkeds > 0 ) THEN 201 rn_ediss0 = rn_ediss 202 CALL spp_gen(kt,rn_ediss0,nn_spp_tkeds,rn_tkeds_sd, jk_spp_tkeds ) 203 ENDIF 204 IF( nn_spp_tkebb > 0 ) THEN 205 rn_ebb0 = rn_ebb 206 CALL spp_gen(kt,rn_ebb0,nn_spp_tkebb,rn_tkebb_sd, jk_spp_tkebb ) 207 ENDIF 208 IF( nn_spp_tkefr > 0 ) THEN 209 rn_efr0 = rn_efr 210 CALL spp_gen(kt,rn_efr0,nn_spp_tkefr,rn_tkefr_sd, jk_spp_tkefr ) 211 ENDIF 187 212 ! 188 213 CALL tke_tke ! now tke (en) … … 199 224 IF( .NOT.Agrif_Root() ) CALL Agrif_Update_Tke( kt ) ! children only 200 225 #endif 201 ! 226 IF ( kt .eq. nitend ) THEN 227 DEALLOCATE ( rn_lc0, rn_ediff0, rn_ediss0, rn_ebb0, rn_efr0 ) 228 ENDIF 229 ! 230 202 231 END SUBROUTINE zdf_tke 203 232 … … 225 254 REAL(wp) :: zrhoa = 1.22 ! Air density kg/m3 226 255 REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient 227 REAL(wp) :: z bbrau, zesh2! temporary scalars228 REAL(wp) :: zfact1 , zfact2, zfact3! - -256 REAL(wp) :: zesh2 ! temporary scalars 257 REAL(wp) :: zfact1 ! - - 229 258 REAL(wp) :: ztx2 , zty2 , zcof ! - - 230 259 REAL(wp) :: ztau , zdif ! - - … … 233 262 !!bfr REAL(wp) :: zebot ! - - 234 263 INTEGER , POINTER, DIMENSION(:,: ) :: imlc 235 REAL(wp), POINTER, DIMENSION(:,: ) :: zhlc 264 REAL(wp), POINTER, DIMENSION(:,: ) :: zhlc, zbbrau,zfact2,zfact3 236 265 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpelc, zdiag, zd_up, zd_lw 237 266 !!-------------------------------------------------------------------- … … 240 269 ! 241 270 CALL wrk_alloc( jpi,jpj, imlc ) ! integer 242 CALL wrk_alloc( jpi,jpj, zhlc ) 271 CALL wrk_alloc( jpi,jpj, zhlc ) 272 CALL wrk_alloc( jpi,jpj, zbbrau ) 273 CALL wrk_alloc( jpi,jpj, zfact2 ) 274 CALL wrk_alloc( jpi,jpj, zfact3 ) 243 275 CALL wrk_alloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw ) 244 276 ! 245 zbbrau = rn_ebb / rau0 ! Local constant initialisation277 zbbrau = rn_ebb0 / rau0 ! Local constant initialisation 246 278 zfact1 = -.5_wp * rdt 247 zfact2 = 1.5_wp * rdt * rn_ediss 248 zfact3 = 0.5_wp * rn_ediss 279 zfact2 = 1.5_wp * rdt * rn_ediss0 280 zfact3 = 0.5_wp * rn_ediss0 249 281 ! 250 282 ! … … 261 293 DO jj = 2, jpjm1 ! en(1) = rn_ebb taum / rau0 (min value rn_emin0) 262 294 DO ji = fs_2, fs_jpim1 ! vector opt. 263 en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1)295 en(ji,jj,1) = MAX( rn_emin0, zbbrau(ji,jj) * taum(ji,jj) ) * tmask(ji,jj,1) 264 296 END DO 265 297 END DO … … 326 358 ! ! vertical velocity due to LC 327 359 zind = 0.5 - SIGN( 0.5, fsdepw(ji,jj,jk) - zhlc(ji,jj) ) 328 zwlc = zind * rn_lc * zus * SIN( rpi * fsdepw(ji,jj,jk) / zhlc(ji,jj) )360 zwlc = zind * rn_lc0(ji,jj) * zus * SIN( rpi * fsdepw(ji,jj,jk) / zhlc(ji,jj) ) 329 361 ! ! TKE Langmuir circulation source term 330 en(ji,jj,jk) = en(ji,jj,jk) + rdt * ( 1._wp -fr_i(ji,jj) ) * ( zwlc * zwlc * zwlc ) / &362 en(ji,jj,jk) = en(ji,jj,jk) + rdt * MAX(0.,1._wp - 2.*fr_i(ji,jj) ) * ( zwlc * zwlc * zwlc ) / & 331 363 & zhlc(ji,jj) * wmask(ji,jj,jk) * tmask(ji,jj,1) 364 332 365 END DO 333 366 END DO … … 380 413 zd_up(ji,jj,jk) = zzd_up ! Matrix (zdiag, zd_up, zd_lw) 381 414 zd_lw(ji,jj,jk) = zzd_lw 382 zdiag(ji,jj,jk) = 1._wp - zzd_lw - zzd_up + zfact2 * dissl(ji,jj,jk) * tmask(ji,jj,jk)415 zdiag(ji,jj,jk) = 1._wp - zzd_lw - zzd_up + zfact2(ji,jj) * dissl(ji,jj,jk) * tmask(ji,jj,jk) 383 416 ! 384 417 ! ! right hand side in en 385 418 en(ji,jj,jk) = en(ji,jj,jk) + rdt * ( zesh2 - avt(ji,jj,jk) * rn2(ji,jj,jk) & 386 & + zfact3 * dissl(ji,jj,jk) * en (ji,jj,jk) ) &419 & + zfact3(ji,jj) * dissl(ji,jj,jk) * en (ji,jj,jk) ) & 387 420 & * wmask(ji,jj,jk) 388 421 END DO … … 455 488 DO jj = 2, jpjm1 456 489 DO ji = fs_2, fs_jpim1 ! vector opt. 457 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) ) &458 & * ( 1._wp -fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1)490 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr0(ji,jj) * en(ji,jj,1) * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) ) & 491 & * MAX(0.,1._wp - 2.*fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 459 492 END DO 460 493 END DO … … 464 497 DO ji = fs_2, fs_jpim1 ! vector opt. 465 498 jk = nmln(ji,jj) 466 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) ) &467 & * ( 1._wp -fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1)499 en(ji,jj,jk) = en(ji,jj,jk) + rn_efr0(ji,jj) * en(ji,jj,1) * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) ) & 500 & * MAX(0.,1._wp - 2.*fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 468 501 END DO 469 502 END DO … … 480 513 zdif = taum(ji,jj) - ztau ! mean of modulus - modulus of the mean 481 514 zdif = rhftau_scl * MAX( 0._wp, zdif + rhftau_add ) ! apply some modifications... 482 en(ji,jj,jk) = en(ji,jj,jk) + zbbrau * zdif * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) ) &483 & * ( 1._wp -fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1)515 en(ji,jj,jk) = en(ji,jj,jk) + zbbrau(ji,jj) * zdif * EXP( -fsdepw(ji,jj,jk) / htau(ji,jj) ) & 516 & * MAX(0.,1._wp - 2.*fr_i(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 484 517 END DO 485 518 END DO … … 516 549 CALL wrk_dealloc( jpi,jpj, imlc ) ! integer 517 550 CALL wrk_dealloc( jpi,jpj, zhlc ) 551 CALL wrk_dealloc( jpi,jpj, zbbrau ) 552 CALL wrk_dealloc( jpi,jpj, zfact2 ) 553 CALL wrk_dealloc( jpi,jpj, zfact3 ) 518 554 CALL wrk_dealloc( jpi,jpj,jpk, zpelc, zdiag, zd_up, zd_lw ) 519 555 ! … … 698 734 DO ji = fs_2, fs_jpim1 ! vector opt. 699 735 zsqen = SQRT( en(ji,jj,jk) ) 700 zav = rn_ediff * zmxlm(ji,jj,jk) * zsqen736 zav = rn_ediff0(ji,jj) * zmxlm(ji,jj,jk) * zsqen 701 737 avm (ji,jj,jk) = MAX( zav, avmb(jk) ) * wmask(ji,jj,jk) 702 738 avt (ji,jj,jk) = MAX( zav, avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk) … … 704 740 END DO 705 741 END DO 742 IF(nn_spp_avt > 0 ) CALL spp_gen(1 ,avt(:,:,jk),nn_spp_avt,rn_avt_sd, jk_spp_avt, jk) 743 IF(nn_spp_avm > 0 ) CALL spp_gen(1 ,avm(:,:,jk),nn_spp_avm,rn_avm_sd, jk_spp_avm, jk) 706 744 END DO 707 745 CALL lbc_lnk( avm, 'W', 1. ) ! Lateral boundary conditions (sign unchanged) … … 840 878 rn_mxl0 = rmxl_min 841 879 ENDIF 880 881 ALLOCATE( rn_lc0 (jpi,jpj) ) ; rn_lc0 = rn_lc 882 ALLOCATE( rn_ediff0(jpi,jpj) ) ; rn_ediff0 = rn_ediff 883 ALLOCATE( rn_ediss0(jpi,jpj) ) ; rn_ediss0 = rn_ediss 884 ALLOCATE( rn_ebb0 (jpi,jpj) ) ; rn_ebb0 = rn_ebb 885 ALLOCATE( rn_efr0 (jpi,jpj) ) ; rn_efr0 = rn_efr 842 886 843 IF( nn_etau == 2 ) THEN844 ierr = zdf_mxl_alloc()845 nmln(:,:) = nlb10 ! Initialization of nmln846 ENDIF847 887 848 888 IF( nn_etau /= 0 .and. nn_htau == 2 ) THEN … … 950 990 CALL tke_avn ! recompute avt, avm, avmu, avmv and dissl (approximation) 951 991 ! 952 avt_k (:,:,:) = avt (:,:,:)953 avm_k (:,:,:) = avm (:,:,:)954 avmu_k(:,:,:) = avmu(:,:,:)955 avmv_k(:,:,:) = avmv(:,:,:)956 !957 992 DO jit = nit000 + 1, nit000 + 10 ; CALL zdf_tke( jit ) ; END DO 958 993 ENDIF 959 994 ELSE !* Start from rest 960 995 en(:,:,:) = rn_emin * tmask(:,:,:) 961 DO jk = 1, jpk ! set the Kz to the background value962 avt (:,:,jk) = avtb(jk) * wmask (:,:,jk)963 avm (:,:,jk) = avmb(jk) * wmask (:,:,jk)964 avmu(:,:,jk) = avmb(jk) * wumask(:,:,jk)965 avmv(:,:,jk) = avmb(jk) * wvmask(:,:,jk)966 END DO967 996 ENDIF 968 997 ! 998 avt_k (:,:,:) = avt (:,:,:) 999 avm_k (:,:,:) = avm (:,:,:) 1000 avmu_k(:,:,:) = avmu(:,:,:) 1001 avmv_k(:,:,:) = avmv(:,:,:) 1002 969 1003 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN ! Create restart file 970 1004 ! ! ------------------- -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r10301 r11394 85 85 USE lbcnfd, ONLY: isendto, nsndto, nfsloop, nfeloop ! Setup of north fold exchanges 86 86 USE sbc_oce, ONLY: lk_oasis 87 USE stopack 87 88 USE stopar 88 89 USE stopts … … 483 484 CALL dia_hsb_init ! heat content, salt content and volume budgets 484 485 CALL trd_init ! Mixed-layer/Vorticity/Integral constraints trends 486 CALL stopack_init ! STOPACK scheme 485 487 IF( lk_diaobs ) THEN ! Observation & model comparison 486 488 CALL dia_obs_init ! Initialize observational data -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/step.F90
r9288 r11394 118 118 CALL lbc_lnk( tsb(:,:,:,tind), 'T', 1. ) 119 119 END DO 120 120 121 IF( ln_stopack ) CALL stopack_pert( kstp ) 121 122 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 122 123 ! clem: moved here for bdy ice purpose 124 123 125 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 124 126 ! Update stochastic parameters and random T/S fluctuations 125 127 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 126 IF( ln_sto_eos ) CALL sto_par( kstp ) ! Stochastic parameters 127 IF( ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 128 129 IF( ln_sto_eos ) CALL sto_par( kstp ) ! Stochastic parameters 130 IF( ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 131 IF( ln_skeb ) CALL skeb_comp( kstp ) 128 132 129 133 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 149 153 ENDIF 150 154 IF( ln_rnf_mouth ) THEN ! increase diffusivity at rivers mouths 151 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf * rnfmsk(:,:) * tmask(:,:,jk) ; END DO 155 IF ( nn_spp_arnf .GT. 0 ) THEN 156 rn_avt_rnf0 = rn_avt_rnf 157 CALL spp_gen( kstp, rn_avt_rnf0,nn_spp_arnf,rn_arnf_sd,jk_spp_arnf ) 158 ENDIF 159 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf0(:,:) * rnfmsk(:,:) * tmask(:,:,jk) ; END DO 152 160 ENDIF 153 161 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity … … 163 171 IF( lrst_oce .AND. lk_zdftke ) CALL tke_rst( kstp, 'WRITE' ) 164 172 IF( lrst_oce .AND. lk_zdfgls ) CALL gls_rst( kstp, 'WRITE' ) 173 IF( lrst_oce .AND. ln_stopack) CALL stopack_rst( kstp, 'WRITE' ) 165 174 ! 166 175 ! LATERAL PHYSICS 167 176 ! 168 177 IF( lk_ldfslp ) THEN ! slope of lateral mixing 169 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 178 IF(ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 179 CALL eos( tsb, rhd, gdept_0(:,:,:) ) ! before in situ density 170 180 IF( ln_zps .AND. .NOT. ln_isfcav) & 171 181 & CALL zps_hde ( kstp, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient … … 202 212 ! Note that the computation of vertical velocity above, hence "after" sea level 203 213 ! is necessary to compute momentum advection for the rhs of barotropic loop: 204 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 214 IF(ln_sto_eos ) CALL sto_pts( tsn ) ! Random T/S fluctuations 215 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 205 216 IF( ln_zps .AND. .NOT. ln_isfcav) & 206 217 & CALL zps_hde ( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient … … 214 225 va(:,:,:) = 0.e0 215 226 IF( lk_asminc .AND. ln_asmiau .AND. & 216 & ln_dyninc ) CALL dyn_asm_inc ( kstp ) ! apply dynamics assimilation increment 217 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! subtract Neptune velocities (simplified) 218 IF( lk_bdy ) CALL bdy_dyn3d_dmp( kstp ) ! bdy damping trends 219 CALL dyn_adv ( kstp ) ! advection (vector or flux form) 220 CALL dyn_vor ( kstp ) ! vorticity term including Coriolis 221 CALL dyn_ldf ( kstp ) ! lateral mixing 222 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! add Neptune velocities (simplified) 227 & ln_dyninc ) CALL dyn_asm_inc ( kstp ) ! apply dynamics assimilation increment 228 IF( ln_sppt_dyn ) CALL dyn_sppt_apply( kstp, 0 ) 229 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! subtract Neptune velocities (simplified) 230 IF( lk_bdy ) CALL bdy_dyn3d_dmp ( kstp ) ! bdy damping trends 231 CALL dyn_adv ( kstp ) ! advection (vector or flux form) 232 CALL dyn_vor ( kstp ) ! vorticity term including Coriolis 233 CALL dyn_ldf ( kstp ) ! lateral mixing 234 IF( ln_neptsimp ) CALL dyn_nept_cor ( kstp ) ! add Neptune velocities (simplified) 223 235 #if defined key_agrif 224 236 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_dyn ! momentum sponge … … 262 274 tsa(:,:,:,:) = 0.e0 ! set tracer trends to zero 263 275 264 IF( lk_asminc .AND. ln_asmiau .AND. & 265 & ln_trainc ) CALL tra_asm_inc( kstp ) ! apply tracer assimilation increment 276 IF( ln_sppt_tra ) CALL tra_sppt_apply ( kstp, 0 ) 277 IF( lk_asminc .AND. ln_asmiau .AND. & 278 & ln_trainc ) CALL tra_asm_inc( kstp ) ! apply tracer assimilation increment 266 279 CALL tra_sbc ( kstp ) ! surface boundary condition 267 280 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr … … 280 293 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra ! tracers sponge 281 294 #endif 295 IF( ln_sppt_tra ) CALL tra_sppt_apply ( kstp, 1 ) 282 296 CALL tra_zdf ( kstp ) ! vertical mixing and after tracer fields 283 297 … … 285 299 IF( ln_zdfnpc ) CALL tra_npc( kstp ) ! update after fields by non-penetrative convection 286 300 CALL tra_nxt( kstp ) ! tracer fields at next time step 301 IF( ln_sppt_tra ) CALL tra_sppt_apply ( kstp, 2 ) 287 302 CALL eos ( tsa, rhd, rhop, fsdept_n(:,:,:) ) ! Time-filtered in situ density for hpg computation 288 303 IF( ln_zps .AND. .NOT. ln_isfcav) & … … 308 323 CALL tra_nxt( kstp ) ! tracer fields at next time step 309 324 IF( ln_bias ) CALL dyn_bias( kstp ) 325 IF( ln_sppt_tra ) THEN 326 CALL tra_sppt_apply ( kstp, 2 ) 327 CALL eos ( tsn, rhd, rhop, fsdept_n(:,:,:) ) ! now in situ density for hpg computation 328 IF( ln_zps .AND. .NOT. ln_isfcav) & 329 & CALL zps_hde ( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps: before horizontal gradient 330 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 331 IF( ln_zps .AND. ln_isfcav) & 332 & CALL zps_hde_isf( kstp, jpts, tsn, gtsu, gtsv, & ! Partial steps for top cell (ISF) 333 & rhd, gru , grv , aru , arv , gzu , gzv , ge3ru , ge3rv , & 334 & gtui, gtvi, grui, grvi, arui, arvi, gzui, gzvi, ge3rui, ge3rvi ) ! of t, s, rd at the last ocean level 335 ENDIF 310 336 ENDIF 311 337 … … 324 350 325 351 CALL dyn_bfr( kstp ) ! bottom friction 352 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 1 ) 326 353 CALL dyn_zdf( kstp ) ! vertical diffusion 327 354 ELSE … … 331 358 IF( lk_asminc .AND. ln_asmiau .AND. & 332 359 & ln_dyninc ) CALL dyn_asm_inc( kstp ) ! apply dynamics assimilation increment 360 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 0 ) 333 361 IF( ln_bkgwri ) CALL asm_bkg_wri( kstp ) ! output background fields 334 362 IF( ln_neptsimp ) CALL dyn_nept_cor( kstp ) ! subtract Neptune velocities (simplified) … … 343 371 CALL dyn_hpg( kstp ) ! horizontal gradient of Hydrostatic pressure 344 372 CALL dyn_bfr( kstp ) ! bottom friction 373 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 1 ) 345 374 CALL dyn_zdf( kstp ) ! vertical diffusion 346 375 CALL dyn_spg( kstp, indic ) ! surface pressure gradient 347 376 ENDIF 348 377 CALL dyn_nxt( kstp ) ! lateral velocity at next time step 378 IF( ln_sppt_dyn ) CALL dyn_sppt_apply ( kstp, 2 ) 379 IF( ln_skeb ) CALL skeb_apply ( kstp ) 349 380 350 381 CALL ssh_swp( kstp ) ! swap of sea surface height … … 381 412 IF( lwm.AND.numoni /= -1 ) CALL FLUSH ( numoni ) ! flush output namelist ice 382 413 ENDIF 414 IF( ln_sto_eos ) CALL sto_rst_write( kstp ) ! write restart file for stochastic parameters 383 415 384 416 -
branches/UKMO/dev_r5518_GO6_package_FOAMv14_STOPACK/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r8400 r11394 96 96 USE diahsb ! heat, salt and volume budgets (dia_hsb routine) 97 97 USE diaharm 98 USE diaprod ! ocean model: product diagnostics 98 99 USE flo_oce ! floats variables 99 100 USE floats ! floats computation (flo_stp routine) … … 113 114 USE timing ! Timing 114 115 116 USE stopack ! Stochastic physics 117 115 118 #if defined key_agrif 116 119 USE agrif_opa_sponge ! Momemtum and tracers sponges
Note: See TracChangeset
for help on using the changeset viewer.