- Timestamp:
- 2020-09-14T17:40:34+02:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@13382 sette
-
- Property svn:externals
-
NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/FLO/floblk.F90
r10425 r13463 4 4 !! Ocean floats : trajectory computation 5 5 !!====================================================================== 6 #if defined key_floats 7 !!---------------------------------------------------------------------- 8 !! 'key_floats' float trajectories 6 !! 9 7 !!---------------------------------------------------------------------- 10 8 !! flotblk : compute float trajectories with Blanke algorithme … … 22 20 PUBLIC flo_blk ! routine called by floats.F90 23 21 22 # include "domzgr_substitute.h90" 23 24 24 !!---------------------------------------------------------------------- 25 25 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 29 29 CONTAINS 30 30 31 SUBROUTINE flo_blk( kt )31 SUBROUTINE flo_blk( kt, Kbb, Kmm ) 32 32 !!--------------------------------------------------------------------- 33 33 !! *** ROUTINE flo_blk *** … … 40 40 !! of the floats and the grid defined on the domain. 41 41 !!---------------------------------------------------------------------- 42 INTEGER, INTENT( in ) :: kt ! ocean time step 42 INTEGER, INTENT( in ) :: kt ! ocean time step 43 INTEGER, INTENT( in ) :: Kbb, Kmm ! ocean time level indices 43 44 !! 45 #ifndef key_agrif 46 47 !RB super quick fix to compile with agrif 48 44 49 INTEGER :: jfl ! dummy loop arguments 45 50 INTEGER :: ind, ifin, iloop … … 101 106 222 DO jfl = 1, jpnfl 102 107 # if defined key_mpp_mpi 103 IF( iil(jfl) >= mig( nldi) .AND. iil(jfl) <= mig(nlei) .AND. &104 ijl(jfl) >= mjg( nldj) .AND. ijl(jfl) <= mjg(nlej) ) THEN108 IF( iil(jfl) >= mig(Nis0) .AND. iil(jfl) <= mig(Nie0) .AND. & 109 ijl(jfl) >= mjg(Njs0) .AND. ijl(jfl) <= mjg(Nje0) ) THEN 105 110 iiloc(jfl) = iil(jfl) - mig(1) + 1 106 111 ijloc(jfl) = ijl(jfl) - mjg(1) + 1 … … 112 117 ! compute the transport across the mesh where the float is. 113 118 !!bug (gm) change e3t into e3. but never checked 114 zsurfx(1) = e2u(iiloc(jfl)-1,ijloc(jfl) ) * e3u_n(iiloc(jfl)-1,ijloc(jfl) ,-ikl(jfl)) 115 zsurfx(2) = e2u(iiloc(jfl) ,ijloc(jfl) ) * e3u_n(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl)) 116 zsurfy(1) = e1v(iiloc(jfl) ,ijloc(jfl)-1) * e3v_n(iiloc(jfl) ,ijloc(jfl)-1,-ikl(jfl)) 117 zsurfy(2) = e1v(iiloc(jfl) ,ijloc(jfl) ) * e3v_n(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl)) 119 zsurfx(1) = & 120 & e2u(iiloc(jfl)-1,ijloc(jfl) ) & 121 & * e3u(iiloc(jfl)-1,ijloc(jfl) ,-ikl(jfl),Kmm) 122 zsurfx(2) = & 123 & e2u(iiloc(jfl) ,ijloc(jfl) ) & 124 & * e3u(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 125 zsurfy(1) = & 126 & e1v(iiloc(jfl) ,ijloc(jfl)-1) & 127 & * e3v(iiloc(jfl) ,ijloc(jfl)-1,-ikl(jfl),Kmm) 128 zsurfy(2) = & 129 & e1v(iiloc(jfl) ,ijloc(jfl) ) & 130 & * e3v(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 118 131 119 132 ! for a isobar float zsurfz is put to zero. The vertical velocity will be zero too. 120 133 zsurfz = e1e2t(iiloc(jfl),ijloc(jfl)) 121 zvol = zsurfz * e3t _n(iiloc(jfl),ijloc(jfl),-ikl(jfl))134 zvol = zsurfz * e3t(iiloc(jfl),ijloc(jfl),-ikl(jfl),Kmm) 122 135 123 136 ! 124 zuinfl =( u b(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(1)125 zuoutfl=( u b(iiloc(jfl) ,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl) ,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(2)126 zvinfl =( v b(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) )/2.*zsurfy(1)127 zvoutfl=( v b(iiloc(jfl),ijloc(jfl) ,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl) ,-ikl(jfl)) )/2.*zsurfy(2)137 zuinfl =( uu(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl),Kbb) + uu(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl),Kmm) )/2.*zsurfx(1) 138 zuoutfl=( uu(iiloc(jfl) ,ijloc(jfl),-ikl(jfl),Kbb) + uu(iiloc(jfl) ,ijloc(jfl),-ikl(jfl),Kmm) )/2.*zsurfx(2) 139 zvinfl =( vv(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl),Kbb) + vv(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl),Kmm) )/2.*zsurfy(1) 140 zvoutfl=( vv(iiloc(jfl),ijloc(jfl) ,-ikl(jfl),Kbb) + vv(iiloc(jfl),ijloc(jfl) ,-ikl(jfl),Kmm) )/2.*zsurfy(2) 128 141 zwinfl =-(wb(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) & 129 & + w n(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. * zsurfz*nisobfl(jfl)142 & + ww(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. * zsurfz*nisobfl(jfl) 130 143 zwoutfl=-(wb(iiloc(jfl),ijloc(jfl),- ikl(jfl) ) & 131 & + w n(iiloc(jfl),ijloc(jfl),- ikl(jfl) ) )/2. * zsurfz*nisobfl(jfl)144 & + ww(iiloc(jfl),ijloc(jfl),- ikl(jfl) ) )/2. * zsurfz*nisobfl(jfl) 132 145 133 146 ! interpolation of velocity field on the float initial position … … 176 189 zgidfl(jfl) = float(iioutfl(jfl) - iiinfl(jfl)) 177 190 IF( zufl(jfl)*zuoutfl <= 0. ) THEN 178 ztxfl(jfl) = 1.E99191 ztxfl(jfl) = HUGE(1._wp) 179 192 ELSE 180 193 IF( ABS(zudfl(jfl)) >= 1.E-5 ) THEN … … 192 205 zgjdfl(jfl) = float(ijoutfl(jfl)-ijinfl(jfl)) 193 206 IF( zvfl(jfl)*zvoutfl <= 0. ) THEN 194 ztyfl(jfl) = 1.E99207 ztyfl(jfl) = HUGE(1._wp) 195 208 ELSE 196 209 IF( ABS(zvdfl(jfl)) >= 1.E-5 ) THEN … … 209 222 zgkdfl(jfl) = float(ikoutfl(jfl) - ikinfl(jfl)) 210 223 IF( zwfl(jfl)*zwoutfl <= 0. ) THEN 211 ztzfl(jfl) = 1.E99224 ztzfl(jfl) = HUGE(1._wp) 212 225 ELSE 213 226 IF( ABS(zwdfl(jfl)) >= 1.E-5 ) THEN … … 234 247 ! test to know if the "age" of the float is not bigger than the 235 248 ! time step 236 IF( zagenewfl(jfl) > r dt ) THEN237 zttfl(jfl) = (r dt-zagefl(jfl)) / zvol238 zagenewfl(jfl) = r dt249 IF( zagenewfl(jfl) > rn_Dt ) THEN 250 zttfl(jfl) = (rn_Dt-zagefl(jfl)) / zvol 251 zagenewfl(jfl) = rn_Dt 239 252 ENDIF 240 253 … … 341 354 ifin = 1 342 355 DO jfl = 1, jpnfl 343 IF( zagefl(jfl) < r dt ) ifin = 0356 IF( zagefl(jfl) < rn_Dt ) ifin = 0 344 357 tpifl(jfl) = zgifl(jfl) + 0.5 345 358 tpjfl(jfl) = zgjfl(jfl) + 0.5 … … 348 361 ifin = 1 349 362 DO jfl = 1, jpnfl 350 IF( zagefl(jfl) < r dt ) ifin = 0363 IF( zagefl(jfl) < rn_Dt ) ifin = 0 351 364 tpifl(jfl) = zgifl(jfl) + 0.5 352 365 tpjfl(jfl) = zgjfl(jfl) + 0.5 … … 365 378 GO TO 222 366 379 ENDIF 380 #endif 367 381 ! 368 382 ! 369 383 END SUBROUTINE flo_blk 370 384 371 # else372 !!----------------------------------------------------------------------373 !! Default option Empty module374 !!----------------------------------------------------------------------375 CONTAINS376 SUBROUTINE flo_blk ! Empty routine377 END SUBROUTINE flo_blk378 #endif379 380 385 !!====================================================================== 381 386 END MODULE floblk
Note: See TracChangeset
for help on using the changeset viewer.