- Timestamp:
- 2020-12-02T14:55:21+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette@13 292sette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/C14/trcatm_c14.F90
r13295 r13998 120 120 IF( ierr3 /= 0 ) CALL ctl_stop( 'STOP', 'trc_atm_c14_ini: unable to allocate fareaz' ) 121 121 ! 122 DO_2D( 1, 1, 1, 1 ) 122 DO_2D( 1, 1, 1, 1 ) ! from C14b package 123 123 IF( gphit(ji,jj) >= yn40 ) THEN 124 124 fareaz(ji,jj,1) = 0. -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/CFC/trcsms_cfc.F90
r13295 r13998 126 126 127 127 ! !------------! 128 DO_2D( 1, 1, 1, 1 ) 129 128 DO_2D( 1, 1, 1, 1 ) ! i-j loop ! 129 ! !------------! 130 130 ! space interpolation 131 131 zpp_cfc = xphem(ji,jj) * zpatm(1,jl) & -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P2Z/p2zopt.F90
r13295 r13998 95 95 ! ! Photosynthetically Available Radiation (PAR) 96 96 zcoef = 12 * redf / rcchl / rpig ! -------------------------------------- 97 DO_3D( 1, 1, 1, 1, 2, jpk ) 97 DO_3D( 1, 1, 1, 1, 2, jpk ) ! local par at w-levels 98 98 zpig = LOG( MAX( TINY(0.), tr(ji,jj,jk-1,jpphy,Kmm) ) * zcoef ) 99 99 zkr = xkr0 + xkrp * EXP( xlr * zpig ) … … 102 102 zparg(ji,jj,jk) = zparg(ji,jj,jk-1) * EXP( -zkg * e3t(ji,jj,jk-1,Kmm) ) 103 103 END_3D 104 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 104 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) ! mean par at t-levels 105 105 zpig = LOG( MAX( TINY(0.), tr(ji,jj,jk,jpphy,Kmm) ) * zcoef ) 106 106 zkr = xkr0 + xkrp * EXP( xlr * zpig ) … … 114 114 ! ! -------------- 115 115 neln(:,:) = 1 ! euphotic layer level 116 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 116 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) ! (i.e. 1rst T-level strictly below EL bottom) 117 117 IF( etot(ji,jj,jk) >= zpar100(ji,jj) ) neln(ji,jj) = jk + 1 118 118 END_3D -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P4Z/p4zfechem.F90
r13295 r13998 118 118 ! 119 119 zfeequi = zFe3(ji,jj,jk) * 1E-9 120 zhplus = max( rtrn, hi(ji,jj,jk) )121 fe3sol = fesol(ji,jj,jk,1) * ( zhplus**3 + fesol(ji,jj,jk,2) * zhplus**2 &122 & + fesol(ji,jj,jk,3) * zhplus + fesol(ji,jj,jk,4) &123 & + fesol(ji,jj,jk,5) / zhplus )124 120 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 125 121 ! precipitation of Fe3+, creation of nanoparticles -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P4Z/p4zlim.F90
r13295 r13998 161 161 zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 162 162 zlim2 = tr(ji,jj,jk,jppo4,Kbb) / ( tr(ji,jj,jk,jppo4,Kbb) + zconc1dnh4 ) 163 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) )163 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) + rtrn ) 164 164 zratio = tr(ji,jj,jk,jpdfe,Kbb) * z1_trbdia 165 165 zironmin = xcoef1 * tr(ji,jj,jk,jpdch,Kbb) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk) -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P4Z/p4zopt.F90
r13295 r13998 37 37 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: par_varsw ! PAR fraction of shortwave 38 38 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ekb, ekg, ekr ! wavelength (Red-Green-Blue) 39 40 INTEGER :: nksrp ! levels below which the light cannot penetrate ( depth larger than 391 m)41 42 REAL(wp), DIMENSION(3,61) :: xkrgb ! tabulated attenuation coefficients for RGB absorption43 39 44 40 !! * Substitutions … … 94 90 irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) 95 91 ! 96 ekb(ji,jj,jk) = xkrgb(1,irgb) * e3t(ji,jj,jk,Kmm)97 ekg(ji,jj,jk) = xkrgb(2,irgb) * e3t(ji,jj,jk,Kmm)98 ekr(ji,jj,jk) = xkrgb(3,irgb) * e3t(ji,jj,jk,Kmm)92 ekb(ji,jj,jk) = rkrgb(1,irgb) * e3t(ji,jj,jk,Kmm) 93 ekg(ji,jj,jk) = rkrgb(2,irgb) * e3t(ji,jj,jk,Kmm) 94 ekr(ji,jj,jk) = rkrgb(3,irgb) * e3t(ji,jj,jk,Kmm) 99 95 END_3D 100 96 ! !* Photosynthetically Available Radiation (PAR) … … 106 102 CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100 ) 107 103 ! 108 DO jk = 1, nksr p104 DO jk = 1, nksr 109 105 etot_ndcy(:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 110 106 enano (:,:,jk) = 1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) … … 112 108 END DO 113 109 IF( ln_p5z ) THEN 114 DO jk = 1, nksr p110 DO jk = 1, nksr 115 111 epico (:,:,jk) = 1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 116 112 END DO … … 121 117 CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3 ) 122 118 ! 123 DO jk = 1, nksr p119 DO jk = 1, nksr 124 120 etot(:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 125 121 END DO … … 131 127 CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100 ) 132 128 ! 133 DO jk = 1, nksr p129 DO jk = 1, nksr 134 130 etot (:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 135 131 enano(:,:,jk) = 1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) … … 137 133 END DO 138 134 IF( ln_p5z ) THEN 139 DO jk = 1, nksr p135 DO jk = 1, nksr 140 136 epico(:,:,jk) = 1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 141 137 END DO … … 150 146 ! 151 147 etot3(:,:,1) = qsr(:,:) * tmask(:,:,1) 152 DO jk = 2, nksr p+ 1148 DO jk = 2, nksr + 1 153 149 etot3(:,:,jk) = ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 154 150 END DO … … 160 156 heup_01(:,:) = gdepw(:,:,2,Kmm) 161 157 162 DO_3D( 1, 1, 1, 1, 2, nksr p)158 DO_3D( 1, 1, 1, 1, 2, nksr ) 163 159 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= zqsr100(ji,jj) ) THEN 164 160 neln(ji,jj) = jk+1 ! Euphotic level : 1rst T-level strictly below Euphotic layer … … 178 174 zetmp2 (:,:) = 0.e0 179 175 180 DO_3D( 1, 1, 1, 1, 1, nksr p)176 DO_3D( 1, 1, 1, 1, 1, nksr ) 181 177 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 182 178 zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! remineralisation … … 189 185 zpar(:,:,:) = etot_ndcy(:,:,:) ! diagnostic : PAR with no diurnal cycle 190 186 ! 191 DO_3D( 1, 1, 1, 1, 1, nksr p)187 DO_3D( 1, 1, 1, 1, 1, nksr ) 192 188 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 193 189 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) … … 201 197 zetmp4 (:,:) = 0.e0 202 198 ! 203 DO_3D( 1, 1, 1, 1, 1, nksr p)199 DO_3D( 1, 1, 1, 1, 1, nksr ) 204 200 IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 205 201 zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production … … 211 207 ediatm(:,:,:) = ediat(:,:,:) 212 208 ! 213 DO_3D( 1, 1, 1, 1, 1, nksr p)209 DO_3D( 1, 1, 1, 1, 1, nksr ) 214 210 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 215 211 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) … … 221 217 IF( ln_p5z ) THEN 222 218 ALLOCATE( zetmp5(jpi,jpj) ) ; zetmp5 (:,:) = 0.e0 223 DO_3D( 1, 1, 1, 1, 1, nksr p)219 DO_3D( 1, 1, 1, 1, 1, nksr ) 224 220 IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 225 221 zetmp5(ji,jj) = zetmp5 (ji,jj) + epico(ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production … … 229 225 epicom(:,:,:) = epico(:,:,:) 230 226 ! 231 DO_3D( 1, 1, 1, 1, 1, nksr p)227 DO_3D( 1, 1, 1, 1, 1, nksr ) 232 228 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 233 229 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) … … 283 279 pe3(:,:,1) = zqsr(:,:) 284 280 ! 285 DO jk = 2, nksr p+ 1281 DO jk = 2, nksr + 1 286 282 DO jj = 1, jpj 287 283 DO ji = 1, jpi … … 302 298 pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekr(:,:,1) ) 303 299 ! 304 DO_3D( 1, 1, 1, 1, 2, nksr p)300 DO_3D( 1, 1, 1, 1, 2, nksr ) 305 301 pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -0.5 * ( ekb(ji,jj,jk-1) + ekb(ji,jj,jk) ) ) 306 302 pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -0.5 * ( ekg(ji,jj,jk-1) + ekg(ji,jj,jk) ) ) … … 400 396 ntimes_par = iom_getszuld( numpar ) ! get number of record in file 401 397 ENDIF 402 !403 CALL trc_oce_rgb( xkrgb ) ! tabulated attenuation coefficients404 nksrp = trc_oce_ext_lev( r_si2, 0.33e2_wp ) ! max level of light extinction (Blue Chl=0.01)405 !406 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m'407 398 ! 408 399 ekr (:,:,:) = 0._wp -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P4Z/p4zsed.F90
r13295 r13998 313 313 ENDIF 314 314 ! 315 IF(sn_cfctl%l_prttrc) THEN ! print mean tr ends (USEd for debugging)315 IF(sn_cfctl%l_prttrc) THEN ! print mean trneds (USEd for debugging) 316 316 WRITE(charout, fmt="('sed ')") 317 317 CALL prt_ctl_info( charout, cdcomp = 'top' ) … … 366 366 lk_sed = ln_sediment .AND. ln_sed_2way 367 367 ! 368 nitrpot(:,:,jpk) = 0._wp ! define last level for iom_put 369 ! 368 370 END SUBROUTINE p4z_sed_init 369 371 -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P4Z/p4zsms.F90
r13295 r13998 69 69 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d 70 70 REAL(wp), ALLOCATABLE, DIMENSION(:,:,: ) :: zw3d 71 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrdt ! 4D workspace71 REAL(wp), DIMENSION(jpi,jpj,jpk,jp_pisces) :: ztrbbio 72 72 73 73 !!--------------------------------------------------------------------- … … 93 93 rfact = rDt_trc 94 94 ! 95 ! trends computation initialisation96 IF( l_trdtrc ) THEN97 ALLOCATE( ztrdt(jpi,jpj,jpk,jp_pisces) ) !* store now fields before applying the Asselin filter98 ztrdt(:,:,:,:) = tr(:,:,:,:,Kmm)99 ENDIF100 !101 102 95 IF( ( ln_top_euler .AND. kt == nittrc000 ) .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + 1 ) ) THEN 103 96 rfactr = 1. / rfact … … 117 110 END DO 118 111 ENDIF 112 113 DO jn = jp_pcs0, jp_pcs1 ! Store the tracer concentrations before entering PISCES 114 ztrbbio(:,:,:,jn) = tr(:,:,:,jn,Kbb) 115 END DO 116 119 117 ! 120 118 IF( ll_bc ) CALL p4z_bc( kt, Kbb, Kmm, Krhs ) ! external sources of nutrients … … 198 196 END DO 199 197 ! 200 IF( ln_top_euler ) THEN 201 DO jn = jp_pcs0, jp_pcs1 202 tr(:,:,:,jn,Kmm) = tr(:,:,:,jn,Kbb) 203 END DO 204 ENDIF 198 END DO 199 ! 200 #endif 201 ! 202 IF( ln_sediment ) THEN 203 ! 204 CALL sed_model( kt, Kbb, Kmm, Krhs ) ! Main program of Sediment model 205 ! 206 ENDIF 207 ! 208 DO jn = jp_pcs0, jp_pcs1 209 tr(:,:,:,jn,Krhs) = ( tr(:,:,:,jn,Kbb) - ztrbbio(:,:,:,jn) ) * rfactr 210 tr(:,:,:,jn,Kbb ) = ztrbbio(:,:,:,jn) 211 ztrbbio(:,:,:,jn) = 0._wp 205 212 END DO 206 213 ! 207 214 IF( l_trdtrc ) THEN 208 215 DO jn = jp_pcs0, jp_pcs1 209 ztrdt(:,:,:,jn) = ( tr(:,:,:,jn,Kbb) - ztrdt(:,:,:,jn) ) * rfactr210 216 CALL trd_trc( tr(:,:,:,jn,Krhs), jn, jptra_sms, kt, Kmm ) ! save trends 211 217 END DO 212 DEALLOCATE( ztrdt )213 218 END IF 214 #endif 215 ! 216 IF( ln_sediment ) THEN 217 ! 218 CALL sed_model( kt, Kbb, Kmm, Krhs ) ! Main program of Sediment model 219 ! 220 IF( ln_top_euler ) THEN 221 DO jn = jp_pcs0, jp_pcs1 222 tr(:,:,:,jn,Kmm) = tr(:,:,:,jn,Kbb) 223 END DO 224 ENDIF 225 ! 226 ENDIF 227 ! 219 ! 228 220 IF( lrst_trc ) CALL p4z_rst( kt, Kbb, Kmm, 'WRITE' ) !* Write PISCES informations in restart file 229 221 ! -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/PISCES/P4Z/p5zlim.F90
r13295 r13998 306 306 & / (xqndmax(ji,jj,jk) - 2. * xqndmin(ji,jj,jk) ) ) & 307 307 & * xqndmax(ji,jj,jk) / (zration + rtrn) 308 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) )308 zlim3 = tr(ji,jj,jk,jpsil,Kbb) / ( tr(ji,jj,jk,jpsil,Kbb) + xksi(ji,jj) + rtrn ) 309 309 zlim4 = MAX( 0., ( zratiof - zqfemd ) / qfdopt ) 310 310 xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/TRP/trdmxl_trc.F90
r13295 r13998 148 148 ! ... Weights for vertical averaging 149 149 wkx_trc(:,:,:) = 0.e0 150 DO_3D( 1, 1, 1, 1, 1, jpktrd_trc ) 150 DO_3D( 1, 1, 1, 1, 1, jpktrd_trc ) ! initialize wkx_trc with vertical scale factor in mixed-layer 151 151 IF( jk - nmld_trc(ji,jj) < 0 ) wkx_trc(ji,jj,jk) = e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 152 152 END_3D -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/oce_trc.F90
r13286 r13998 85 85 USE traqsr , ONLY : rn_abs => rn_abs !: fraction absorbed in the very near surface 86 86 USE traqsr , ONLY : rn_si0 => rn_si0 !: very near surface depth of extinction 87 USE traqsr , ONLY : nksr => nksr !: levels below which the light cannot penetrate (depth larger than 391 m) 88 USE traqsr , ONLY : rkrgb => rkrgb !: tabulated attenuation coefficients for RGB absorption 87 89 USE traqsr , ONLY : ln_qsr_bio => ln_qsr_bio !: flag to use or not the biological fluxes for light 88 90 USE sbcrnf , ONLY : rnfmsk => rnfmsk !: mixed adv scheme in runoffs vicinity (hori.) -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/trc.F90
r12489 r13998 21 21 INTEGER, PUBLIC :: numonr = -1 !: reference passive tracer namelist output output.namelist.top 22 22 INTEGER, PUBLIC :: numstr !: tracer statistics 23 INTEGER, PUBLIC :: numrtr 23 INTEGER, PUBLIC :: numrtr = -1 !: trc restart (read ) 24 24 INTEGER, PUBLIC :: numrtw !: trc restart ( write ) 25 25 CHARACTER(:), ALLOCATABLE, PUBLIC :: numnat_ref !: character buffer for reference passive tracer namelist_top_ref -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/trcbdy.F90
r13226 r13998 49 49 INTEGER :: ib_bdy ,ir, jn ,igrd ! Loop indices 50 50 REAL(wp), POINTER, DIMENSION(:,:) :: ztrc 51 REAL(wp), POINTER :: zfac52 51 LOGICAL :: llrim0 ! indicate if rim 0 is treated 53 52 LOGICAL, DIMENSION(4) :: llsend1, llrecv1 ! indicate how communications are to be carried out … … 61 60 IF( ir == 0 ) THEN ; llrim0 = .TRUE. 62 61 ELSE ; llrim0 = .FALSE. 63 END 62 ENDIF 64 63 DO ib_bdy=1, nb_bdy 64 ! 65 65 DO jn = 1, jptra 66 66 ! 67 ztrc => trcdta_bdy(jn,ib_bdy)%trc 68 zfac => trcdta_bdy(jn,ib_bdy)%rn_fac 67 IF( ASSOCIATED(trcdta_bdy(jn,ib_bdy)%trc) .AND. trcdta_bdy(jn,ib_bdy)%cn_obc /= 'neumann' ) THEN 68 IF( .NOT. ASSOCIATED(ztrc) ) ALLOCATE( ztrc(idx_bdy(ib_bdy)%nblen(igrd),jpk) ) 69 ztrc(:,:) = trcdta_bdy(jn,ib_bdy)%trc(:,:) * trcdta_bdy(jn,ib_bdy)%rn_fac 70 ENDIF 69 71 ! 70 SELECT CASE( TRIM(trcdta_bdy(jn,ib_bdy)%cn_obc))72 SELECT CASE( trcdta_bdy(jn,ib_bdy)%cn_obc ) 71 73 CASE('none' ) ; CYCLE 72 74 CASE('frs' ) ! treat the whole boundary at once 73 IF( ir == 0 ) CALL bdy_frs( idx_bdy(ib_bdy), tr(:,:,:,jn,Krhs), ztrc*zfac )75 IF( ir == 0 ) CALL bdy_frs( idx_bdy(ib_bdy), tr(:,:,:,jn,Krhs), ztrc ) 74 76 CASE('specified' ) ! treat the whole rim at once 75 IF( ir == 0 ) CALL bdy_spe( idx_bdy(ib_bdy), tr(:,:,:,jn,Krhs), ztrc*zfac ) 76 CASE('neumann' ) ; CALL bdy_nmn( idx_bdy(ib_bdy), igrd , tr(:,:,:,jn,Krhs) ) ! tra masked 77 CASE('orlanski' ) ; CALL bdy_orl( idx_bdy(ib_bdy), tr(:,:,:,jn,Kbb), tr(:,:,:,jn,Krhs), ztrc*zfac, ll_npo=.false. ) 78 CASE('orlanski_npo') ; CALL bdy_orl( idx_bdy(ib_bdy), tr(:,:,:,jn,Kbb), tr(:,:,:,jn,Krhs), ztrc*zfac, ll_npo=.true. ) 77 IF( ir == 0 ) CALL bdy_spe( idx_bdy(ib_bdy), tr(:,:,:,jn,Krhs), ztrc ) 78 CASE('neumann' ) ; CALL bdy_nmn( idx_bdy(ib_bdy), igrd , tr(:,:,:,jn,Krhs), llrim0 ) ! tra masked 79 CASE('orlanski' ) ; CALL bdy_orl( idx_bdy(ib_bdy), tr(:,:,:,jn,Kbb), tr(:,:,:,jn,Krhs), ztrc, llrim0, & 80 & ll_npo=.FALSE. ) 81 CASE('orlanski_npo') ; CALL bdy_orl( idx_bdy(ib_bdy), tr(:,:,:,jn,Kbb), tr(:,:,:,jn,Krhs), ztrc, llrim0, & 82 & ll_npo=.TRUE. ) 79 83 CASE DEFAULT ; CALL ctl_stop( 'trc_bdy : unrecognised option for open boundaries for passive tracers' ) 80 84 END SELECT 81 85 ! 82 86 END DO 87 ! 88 IF( ASSOCIATED(ztrc) ) DEALLOCATE(ztrc) 89 ! 83 90 END DO 84 91 ! 85 92 IF( nn_hls > 1 .AND. ir == 1 ) CYCLE ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 86 IF( nn_hls == 1 ) THEN ; llsend1(:) = .false. ; llrecv1(:) = .false. ; END 93 IF( nn_hls == 1 ) THEN ; llsend1(:) = .false. ; llrecv1(:) = .false. ; ENDIF 87 94 DO ib_bdy=1, nb_bdy 88 SELECT CASE( TRIM(cn_tra(ib_bdy)) )95 SELECT CASE( cn_tra(ib_bdy) ) 89 96 CASE('neumann') 90 97 llsend1(:) = llsend1(:) .OR. lsend_bdyint(ib_bdy,1,:,ir) ! possibly every direction, T points … … 97 104 IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN ! if need to send/recv in at least one direction 98 105 CALL lbc_lnk( 'trcbdy', tr(:,:,:,:,Krhs), 'T', 1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 99 END 106 ENDIF 100 107 ! 101 108 END DO ! ir -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/trcdta.F90
r13295 r13998 199 199 WRITE(numout,*) 'trc_dta: interpolates passive tracer data onto the s- or mixed s-z-coordinate mesh' 200 200 ENDIF 201 DO_2D( 1, 1, 1, 1 ) 201 DO_2D( 1, 1, 1, 1 ) ! vertical interpolation of T & S 202 202 DO jk = 1, jpk ! determines the intepolated T-S profiles at each (i,j) points 203 203 zl = gdept(ji,jj,jk,Kmm) -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/TOP/trcrst.F90
r13286 r13998 237 237 ! calculate start time in hours and minutes 238 238 zdayfrac=adatrj-INT(adatrj) 239 ksecs = NINT(zdayfrac*86400) ! Nearest second to catch rounding errors in adatrj 239 ksecs = NINT(zdayfrac*86400) ! Nearest second to catch rounding errors in adatrj 240 240 ihour = INT(ksecs/3600) 241 241 iminute = ksecs/60-ihour*60 … … 258 258 adatrj = INT(adatrj) ! adatrj set to integer as nn_time0 updated 259 259 ELSE 260 ndt05 = NINT( 0.5 * rn_Dt ) ! --- WARNING --- not defined yet are we did not go through day_init 260 261 ! parameters corresponding to nit000 - 1 (as we start the step 261 262 ! loop with a call to day) 262 ndastp = ndate0 - 1! ndate0 read in the namelist in dom_nam263 ndastp = ndate0 ! ndate0 read in the namelist in dom_nam 263 264 nhour = nn_time0 / 100 264 265 nminute = ( nn_time0 - nhour * 100 )
Note: See TracChangeset
for help on using the changeset viewer.