New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 13463 for NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/FLO/floblk.F90 – NEMO

Ignore:
Timestamp:
2020-09-14T17:40:34+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2195:update to trunk 13461

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  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@13382        sette 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/FLO/floblk.F90

    r10425 r13463  
    44   !! Ocean floats :   trajectory computation 
    55   !!====================================================================== 
    6 #if   defined key_floats 
    7    !!---------------------------------------------------------------------- 
    8    !!   'key_floats'                                     float trajectories 
     6   !! 
    97   !!---------------------------------------------------------------------- 
    108   !!    flotblk     : compute float trajectories with Blanke algorithme 
     
    2220   PUBLIC   flo_blk    ! routine called by floats.F90 
    2321 
     22#  include "domzgr_substitute.h90" 
     23 
    2424   !!---------------------------------------------------------------------- 
    2525   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    2929CONTAINS 
    3030 
    31    SUBROUTINE flo_blk( kt ) 
     31   SUBROUTINE flo_blk( kt, Kbb, Kmm ) 
    3232      !!--------------------------------------------------------------------- 
    3333      !!                  ***  ROUTINE flo_blk  *** 
     
    4040      !!      of the floats and the grid defined on the domain. 
    4141      !!---------------------------------------------------------------------- 
    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 
    4344      !! 
     45#ifndef key_agrif 
     46 
     47!RB super quick fix to compile with agrif 
     48 
    4449      INTEGER :: jfl              ! dummy loop arguments 
    4550      INTEGER :: ind, ifin, iloop 
     
    101106222   DO jfl = 1, jpnfl 
    102107# 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)   ) THEN 
     108         IF( iil(jfl) >= mig(Nis0) .AND. iil(jfl) <= mig(Nie0) .AND.   & 
     109             ijl(jfl) >= mjg(Njs0) .AND. ijl(jfl) <= mjg(Nje0)   ) THEN 
    105110            iiloc(jfl) = iil(jfl) - mig(1) + 1 
    106111            ijloc(jfl) = ijl(jfl) - mjg(1) + 1 
     
    112117            ! compute the transport across the mesh where the float is.             
    113118!!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) 
    118131 
    119132            ! for a isobar float zsurfz is put to zero. The vertical velocity will be zero too. 
    120133            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) 
    122135 
    123136            ! 
    124             zuinfl =( ub(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(1) 
    125             zuoutfl=( ub(iiloc(jfl)  ,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl)  ,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(2) 
    126             zvinfl =( vb(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) )/2.*zsurfy(1) 
    127             zvoutfl=( vb(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) 
    128141            zwinfl =-(wb(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1))    & 
    129                &   +  wn(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. *  zsurfz*nisobfl(jfl) 
     142               &   +  ww(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. *  zsurfz*nisobfl(jfl) 
    130143            zwoutfl=-(wb(iiloc(jfl),ijloc(jfl),- ikl(jfl)   )   & 
    131                &   +  wn(iiloc(jfl),ijloc(jfl),- ikl(jfl)   ) )/2. *  zsurfz*nisobfl(jfl) 
     144               &   +  ww(iiloc(jfl),ijloc(jfl),- ikl(jfl)   ) )/2. *  zsurfz*nisobfl(jfl) 
    132145             
    133146            ! interpolation of velocity field on the float initial position             
     
    176189            zgidfl(jfl) = float(iioutfl(jfl) - iiinfl(jfl)) 
    177190            IF( zufl(jfl)*zuoutfl <= 0. ) THEN 
    178                ztxfl(jfl) = 1.E99 
     191               ztxfl(jfl) = HUGE(1._wp) 
    179192            ELSE 
    180193               IF( ABS(zudfl(jfl)) >= 1.E-5 ) THEN 
     
    192205            zgjdfl(jfl) = float(ijoutfl(jfl)-ijinfl(jfl)) 
    193206            IF( zvfl(jfl)*zvoutfl <= 0. ) THEN 
    194                ztyfl(jfl) = 1.E99 
     207               ztyfl(jfl) = HUGE(1._wp) 
    195208            ELSE 
    196209               IF( ABS(zvdfl(jfl)) >= 1.E-5 ) THEN 
     
    209222               zgkdfl(jfl) = float(ikoutfl(jfl) - ikinfl(jfl)) 
    210223               IF( zwfl(jfl)*zwoutfl <= 0. ) THEN 
    211                   ztzfl(jfl) = 1.E99 
     224                  ztzfl(jfl) = HUGE(1._wp) 
    212225               ELSE 
    213226                  IF( ABS(zwdfl(jfl)) >= 1.E-5 ) THEN 
     
    234247            ! test to know if the "age" of the float is not bigger than the  
    235248            ! time step 
    236             IF( zagenewfl(jfl) > rdt ) THEN 
    237                zttfl(jfl) = (rdt-zagefl(jfl)) / zvol 
    238                zagenewfl(jfl) = rdt 
     249            IF( zagenewfl(jfl) > rn_Dt ) THEN 
     250               zttfl(jfl) = (rn_Dt-zagefl(jfl)) / zvol 
     251               zagenewfl(jfl) = rn_Dt 
    239252            ENDIF 
    240253             
     
    341354         ifin = 1 
    342355         DO jfl = 1, jpnfl 
    343             IF( zagefl(jfl) < rdt )   ifin = 0 
     356            IF( zagefl(jfl) < rn_Dt )   ifin = 0 
    344357            tpifl(jfl) = zgifl(jfl) + 0.5 
    345358            tpjfl(jfl) = zgjfl(jfl) + 0.5 
     
    348361         ifin = 1 
    349362         DO jfl = 1, jpnfl 
    350             IF( zagefl(jfl) < rdt )   ifin = 0 
     363            IF( zagefl(jfl) < rn_Dt )   ifin = 0 
    351364            tpifl(jfl) = zgifl(jfl) + 0.5 
    352365            tpjfl(jfl) = zgjfl(jfl) + 0.5 
     
    365378         GO TO 222 
    366379      ENDIF 
     380#endif 
    367381      ! 
    368382      ! 
    369383   END SUBROUTINE flo_blk 
    370384 
    371 #  else 
    372    !!---------------------------------------------------------------------- 
    373    !!   Default option                                         Empty module 
    374    !!---------------------------------------------------------------------- 
    375 CONTAINS 
    376    SUBROUTINE flo_blk                  ! Empty routine 
    377    END SUBROUTINE flo_blk  
    378 #endif 
    379     
    380385   !!====================================================================== 
    381386END MODULE floblk  
Note: See TracChangeset for help on using the changeset viewer.