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 2345 – NEMO

Changeset 2345


Ignore:
Timestamp:
2010-10-29T18:08:41+02:00 (13 years ago)
Author:
gm
Message:

v3.3beta: FLO-compilation errors (to be done also on v3.2 \!)

Location:
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/FLO
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/FLO/flo4rk.F90

    r2287 r2345  
    1111   !!   flo_interp     : interpolation 
    1212   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
    1413   USE flo_oce         ! ocean drifting floats 
    1514   USE oce             ! ocean dynamics and tracers 
     
    2019   PRIVATE 
    2120 
    22    !! * Accessibility 
    23    PUBLIC flo_4rk      ! routine called by floats.F90 
    24  
    25    !! * Module variables 
    26    REAL(wp), DIMENSION (4) ::   &   ! RK4 and Lagrange interpolation 
    27       tcoef1 = (/  1.0  ,  0.5  ,  0.5  ,  0.0  /) ,  &  ! coeffients  for  
    28       tcoef2 = (/  0.0  ,  0.5  ,  0.5  ,  1.0  /) ,  &  ! lagrangian interp. 
    29       scoef2 = (/  1.0  ,  2.0  ,  2.0  ,  1.0  /) ,  &  ! RK4 coefficients 
    30       rcoef  = (/-1./6. , 1./2. ,-1./2. , 1./6. /)       ! ??? 
    31    REAL(wp), DIMENSION (3) ::   & 
    32       scoef1 = (/ .5, .5, 1. /)       ! compute position with interpolated 
     21   PUBLIC   flo_4rk    ! routine called by floats.F90 
     22 
     23   !                                   ! RK4 and Lagrange interpolation coefficients 
     24   REAL(wp), DIMENSION (4) ::   tcoef1 = (/  1.0  ,  0.5  ,  0.5  ,  0.0  /)   !  
     25   REAL(wp), DIMENSION (4) ::   tcoef2 = (/  0.0  ,  0.5  ,  0.5  ,  1.0  /)   ! 
     26   REAL(wp), DIMENSION (4) ::   scoef2 = (/  1.0  ,  2.0  ,  2.0  ,  1.0  /)   ! 
     27   REAL(wp), DIMENSION (4) ::   rcoef  = (/-1./6. , 1./2. ,-1./2. , 1./6. /)   ! 
     28   REAL(wp), DIMENSION (3) ::   scoef1 = (/  0.5  ,  0.5  ,  1.0  /)           ! 
     29 
     30   !! * Substitutions 
     31#  include "domzgr_substitute.h90" 
    3332   !!---------------------------------------------------------------------- 
    3433   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    3534   !! $Id$  
    36    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    37    !!---------------------------------------------------------------------- 
    38  
     35   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     36   !!---------------------------------------------------------------------- 
    3937CONTAINS 
    4038 
     
    5048      !!         We need to know the velocity field, the old positions of the 
    5149      !!       floats and the grid defined on the domain. 
     50      !!---------------------------------------------------------------------- 
     51      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    5252      !! 
    53       !!---------------------------------------------------------------------- 
    54       !! * Arguments 
    55       INTEGER, INTENT(in) ::   kt     ! ocean time-step index 
    56  
    57       !! * Local declarations 
    5853      INTEGER ::  jfl, jind           ! dummy loop indices 
    59       REAL(wp), DIMENSION ( jpnfl)  ::   & 
    60          zgifl, zgjfl, zgkfl,   &     ! index RK  positions 
    61          zufl, zvfl, zwfl             ! interpolated velocity at the 
    62       ! float position  
    63       REAL(wp), DIMENSION ( jpnfl, 4 )  ::    & 
    64          zrkxfl, zrkyfl, zrkzfl       ! RK coefficients 
     54      REAL(wp), DIMENSION(jpnfl)   ::   zgifl , zgjfl , zgkfl    ! index RK  positions 
     55      REAL(wp), DIMENSION(jpnfl)   ::   zufl  , zvfl  , zwfl     ! interpolated velocity at the float position  
     56      REAL(wp), DIMENSION(jpnfl,4) ::   zrkxfl, zrkyfl, zrkzfl   ! RK coefficients 
    6557      !!--------------------------------------------------------------------- 
    6658     
     
    127119      END DO 
    128120        
    129       DO  jind = 1, 4 
    130           
     121      DO  jind = 1, 4          
     122       
    131123         ! for each step we compute the compute the velocity with Lagrange interpolation 
    132          CALL flo_interp(zgifl,zgjfl,zgkfl,zufl,zvfl,zwfl,jind) 
     124         CALL flo_interp( zgifl, zgjfl, zgkfl, zufl, zvfl, zwfl, jind ) 
    133125          
    134126         ! computation of Runge-Kutta factor 
    135           
    136127         DO jfl = 1, jpnfl 
    137128            zrkxfl(jfl,jind) = rdt*zufl(jfl) 
     
    154145         END DO 
    155146      END DO 
    156  
     147      ! 
    157148   END SUBROUTINE flo_4rk 
    158149 
    159150 
    160151   SUBROUTINE flo_interp( pxt , pyt , pzt ,      & 
    161       &                   pufl, pvfl, pwfl, kind ) 
     152      &                   pufl, pvfl, pwfl, ki ) 
    162153      !!---------------------------------------------------------------------- 
    163154      !!                ***  ROUTINE flointerp  *** 
     
    169160      !!      compute velocity at the date and the position we need to 
    170161      !!      integrated with RK method. 
     162      !!---------------------------------------------------------------------- 
     163      REAL(wp) , DIMENSION(jpnfl), INTENT(in   ) ::   pxt , pyt , pzt    ! position of the float 
     164      REAL(wp) , DIMENSION(jpnfl), INTENT(  out) ::   pufl, pvfl, pwfl   ! velocity at this position 
     165      INTEGER                    , INTENT(in   ) ::   ki                 ! 
    171166      !! 
    172       !!---------------------------------------------------------------------- 
    173       !! * Local declarations 
    174       INTEGER ::   & 
    175          kind,   & 
    176          jfl, jind1, jind2, jind3,   & 
    177          zsumu, zsumv, zsumw 
    178       INTEGER , DIMENSION  ( jpnfl  ) ::   & 
    179          iilu, ijlu, iklu,     &           ! nearest neighbour INDEX-u 
    180          iilv, ijlv, iklv,     &           ! nearest neighbour INDEX-v 
    181          iilw, ijlw, iklw                  ! nearest neighbour INDEX-w 
    182       INTEGER , DIMENSION  ( jpnfl, 4  ) ::   & 
    183          iidu, ijdu, ikdu,    &            ! 64 nearest neighbour INDEX-u 
    184          iidv, ijdv, ikdv,    &            ! 64 nearest neighbour INDEX-v 
    185          iidw, ijdw, ikdw                  ! 64 nearest neighbour INDEX-w 
    186       REAL(wp) , DIMENSION  ( jpnfl  ) ::   & 
    187          pxt , pyt , pzt,     &            ! position of the float 
    188          pufl, pvfl, pwfl                  ! velocity at this position 
    189       REAL(wp) , DIMENSION  ( jpnfl, 4, 4, 4 ) ::   & 
    190          ztufl, ztvfl, ztwfl               ! velocity at choosen time step 
    191       REAL(wp) , DIMENSION  ( jpnfl, 4 ) ::   & 
    192          zlagxu, zlagyu, zlagzu,   &       ! Lagrange  coefficients 
    193          zlagxv, zlagyv, zlagzv,   & 
    194          zlagxw, zlagyw, zlagzw 
     167      INTEGER  ::   jfl, jind1, jind2, jind3   ! dummy loop indices 
     168      REAL(wp) ::   zsumu, zsumv, zsumw        ! local scalar 
     169      INTEGER , DIMENSION(jpnfl)   ::   iilu, ijlu, iklu   ! nearest neighbour INDEX-u 
     170      INTEGER , DIMENSION(jpnfl)   ::   iilv, ijlv, iklv   ! nearest neighbour INDEX-v 
     171      INTEGER , DIMENSION(jpnfl)   ::   iilw, ijlw, iklw   ! nearest neighbour INDEX-w 
     172      INTEGER , DIMENSION(jpnfl,4) ::   iidu, ijdu, ikdu   ! 64 nearest neighbour INDEX-u 
     173      INTEGER , DIMENSION(jpnfl,4) ::   iidv, ijdv, ikdv   ! 64 nearest neighbour INDEX-v 
     174      INTEGER , DIMENSION(jpnfl,4) ::   iidw, ijdw, ikdw   ! 64 nearest neighbour INDEX-w 
     175      REAL(wp) , DIMENSION(jpnfl,4,4,4) ::   ztufl , ztvfl , ztwfl   ! velocity at choosen time step 
     176      REAL(wp) , DIMENSION(jpnfl,4)     ::   zlagxu, zlagyu, zlagzu   ! Lagrange  coefficients 
     177      REAL(wp) , DIMENSION(jpnfl,4)     ::   zlagxv, zlagyv, zlagzv   !    -           - 
     178      REAL(wp) , DIMENSION(jpnfl,4)     ::   zlagxw, zlagyw, zlagzw   !    -           - 
    195179      !!--------------------------------------------------------------------- 
    196180       
     
    208192         DO jfl = 1, jpnfl 
    209193            !  i-direction 
    210             IF( iilu(jfl) <= 2 ) THEN 
    211                iidu(jfl,jind1) = jind1 
    212             ELSE 
    213                IF( iilu(jfl) >= jpi-1 ) THEN 
    214                   iidu(jfl,jind1) = jpi + jind1 - 4 
    215                ELSE 
    216                   iidu(jfl,jind1) = iilu(jfl) + jind1 - 2 
     194            IF( iilu(jfl) <= 2 ) THEN          ;   iidu(jfl,jind1) = jind1 
     195            ELSE 
     196               IF( iilu(jfl) >= jpi-1 ) THEN   ;   iidu(jfl,jind1) = jpi       + jind1 - 4 
     197               ELSE                            ;   iidu(jfl,jind1) = iilu(jfl) + jind1 - 2 
    217198               ENDIF 
    218199            ENDIF 
    219200            !  j-direction 
    220             IF( ijlu(jfl) <= 2 ) THEN 
    221                ijdu(jfl,jind1) = jind1 
    222             ELSE 
    223                IF( ijlu(jfl) >= jpj-1 ) THEN 
    224                   ijdu(jfl,jind1) = jpj + jind1 - 4 
    225                ELSE 
    226                   ijdu(jfl,jind1) = ijlu(jfl) + jind1 - 2 
     201            IF( ijlu(jfl) <= 2 ) THEN          ;   ijdu(jfl,jind1) = jind1 
     202            ELSE 
     203               IF( ijlu(jfl) >= jpj-1 ) THEN   ;   ijdu(jfl,jind1) = jpj       + jind1 - 4 
     204               ELSE                            ;   ijdu(jfl,jind1) = ijlu(jfl) + jind1 - 2 
    227205               ENDIF 
    228206            ENDIF 
    229207            ! k-direction 
    230             IF( iklu(jfl) <= 2 ) THEN 
    231                ikdu(jfl,jind1) = jind1 
    232             ELSE 
    233                IF( iklu(jfl) >= jpk-1 ) THEN 
    234                   ikdu(jfl,jind1) = jpk + jind1 - 4 
    235                ELSE 
    236                   ikdu(jfl,jind1) = iklu(jfl) + jind1 - 2 
     208            IF( iklu(jfl) <= 2 ) THEN          ;   ikdu(jfl,jind1) = jind1 
     209            ELSE 
     210               IF( iklu(jfl) >= jpk-1 ) THEN   ;   ikdu(jfl,jind1) = jpk + jind1 - 4 
     211               ELSE                            ;   ikdu(jfl,jind1) = iklu(jfl) + jind1 - 2 
    237212               ENDIF 
    238213            ENDIF 
     
    241216       
    242217      ! Lagrange coefficients 
    243        
    244218      DO jfl = 1, jpnfl 
    245219         DO jind1 = 1, 4 
     
    249223         END DO 
    250224      END DO 
    251        
    252225      DO jind1 = 1, 4 
    253226         DO jind2 = 1, 4 
     
    269242               DO jind3 = 1, 4 
    270243                  ztufl(jfl,jind1,jind2,jind3) =   & 
    271                      &   (  tcoef1(kind) * ub(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) +   & 
    272                      &      tcoef2(kind) * un(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) )   & 
     244                     &   (  tcoef1(ki) * ub(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) +   & 
     245                     &      tcoef2(ki) * un(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) )   & 
    273246                     &      / e1u(iidu(jfl,jind1),ijdu(jfl,jind2))  
    274247               END DO 
     
    301274         DO jfl = 1, jpnfl 
    302275            ! i-direction 
    303             IF( iilv(jfl) <= 2 ) THEN 
    304                iidv(jfl,jind1) = jind1 
    305             ELSE 
    306                IF( iilv(jfl) >= jpi-1 ) THEN 
    307                   iidv(jfl,jind1) = jpi + jind1 - 4 
    308                ELSE 
    309                   iidv(jfl,jind1) = iilv(jfl) + jind1 - 2 
     276            IF( iilv(jfl) <= 2 ) THEN          ;   iidv(jfl,jind1) = jind1 
     277            ELSE 
     278               IF( iilv(jfl) >= jpi-1 ) THEN   ;   iidv(jfl,jind1) = jpi       + jind1 - 4 
     279               ELSE                            ;   iidv(jfl,jind1) = iilv(jfl) + jind1 - 2 
    310280               ENDIF 
    311281            ENDIF 
    312282            ! j-direction 
    313             IF( ijlv(jfl) <= 2 ) THEN 
    314                ijdv(jfl,jind1) = jind1 
    315             ELSE 
    316                IF( ijlv(jfl) >= jpj-1 ) THEN 
    317                   ijdv(jfl,jind1) = jpj + jind1 - 4 
    318                ELSE 
    319                   ijdv(jfl,jind1) = ijlv(jfl) + jind1 - 2 
     283            IF( ijlv(jfl) <= 2 ) THEN          ;   ijdv(jfl,jind1) = jind1 
     284            ELSE 
     285               IF( ijlv(jfl) >= jpj-1 ) THEN   ;   ijdv(jfl,jind1) = jpj       + jind1 - 4 
     286               ELSE                            ;   ijdv(jfl,jind1) = ijlv(jfl) + jind1 - 2 
    320287               ENDIF 
    321288            ENDIF 
    322289            ! k-direction 
    323             IF( iklv(jfl) <= 2 ) THEN 
    324                ikdv(jfl,jind1) = jind1 
    325             ELSE 
    326                IF( iklv(jfl) >= jpk-1 ) THEN 
    327                   ikdv(jfl,jind1) = jpk + jind1 - 4 
    328                ELSE 
    329                   ikdv(jfl,jind1) = iklv(jfl) + jind1 - 2 
     290            IF( iklv(jfl) <= 2 ) THEN          ;   ikdv(jfl,jind1) = jind1 
     291            ELSE 
     292               IF( iklv(jfl) >= jpk-1 ) THEN   ;   ikdv(jfl,jind1) = jpk + jind1 - 4 
     293               ELSE                            ;   ikdv(jfl,jind1) = iklv(jfl) + jind1 - 2 
    330294               ENDIF 
    331295            ENDIF 
     
    347311            DO jfl = 1, jpnfl 
    348312               IF( jind1 /= jind2 ) THEN 
    349                   zlagxv(jfl,jind1)= zlagxv(jfl,jind1)*(pxt(jfl) - (float(iidv(jfl,jind2))) ) 
     313                  zlagxv(jfl,jind1)= zlagxv(jfl,jind1)*(pxt(jfl) - (float(iidv(jfl,jind2))   ) ) 
    350314                  zlagyv(jfl,jind1)= zlagyv(jfl,jind1)*(pyt(jfl) - (float(ijdv(jfl,jind2))+.5) ) 
    351                   zlagzv(jfl,jind1)= zlagzv(jfl,jind1)*(pzt(jfl) - (float(ikdv(jfl,jind2))) ) 
     315                  zlagzv(jfl,jind1)= zlagzv(jfl,jind1)*(pzt(jfl) - (float(ikdv(jfl,jind2))   ) ) 
    352316               ENDIF 
    353317            END DO 
     
    362326               DO jind3 = 1 ,4 
    363327                  ztvfl(jfl,jind1,jind2,jind3)=   & 
    364                      &   ( tcoef1(kind) * vb(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3))  +   & 
    365                      &     tcoef2(kind) * vn(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3)) )    &  
     328                     &   ( tcoef1(ki) * vb(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3))  +   & 
     329                     &     tcoef2(ki) * vn(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3)) )    &  
    366330                     &     / e2v(iidv(jfl,jind1),ijdv(jfl,jind2)) 
    367331               END DO 
     
    385349      ! nearest neightboring point for computation of w  
    386350      DO jfl = 1, jpnfl 
    387          iilw(jfl) = INT(pxt(jfl)) 
    388          ijlw(jfl) = INT(pyt(jfl)) 
    389          iklw(jfl) = INT(pzt(jfl)+.5) 
     351         iilw(jfl) = INT( pxt(jfl)   ) 
     352         ijlw(jfl) = INT( pyt(jfl)   ) 
     353         iklw(jfl) = INT( pzt(jfl)+.5) 
    390354      END DO 
    391355       
     
    394358         DO jfl = 1, jpnfl 
    395359            ! i-direction 
    396             IF( iilw(jfl) <= 2 ) THEN 
    397                iidw(jfl,jind1) = jind1 
    398             ELSE 
    399                IF( iilw(jfl) >= jpi-1 ) THEN 
    400                   iidw(jfl,jind1) = jpi + jind1 - 4 
    401                ELSE 
    402                   iidw(jfl,jind1) = iilw(jfl) + jind1 - 2 
     360            IF( iilw(jfl) <= 2 ) THEN          ;   iidw(jfl,jind1) = jind1 
     361            ELSE 
     362               IF( iilw(jfl) >= jpi-1 ) THEN   ;   iidw(jfl,jind1) = jpi       + jind1 - 4 
     363               ELSE                            ;   iidw(jfl,jind1) = iilw(jfl) + jind1 - 2 
    403364               ENDIF 
    404365            ENDIF 
    405366            ! j-direction 
    406             IF( ijlw(jfl) <= 2 ) THEN 
    407                ijdw(jfl,jind1) = jind1 
    408             ELSE 
    409                IF( ijlw(jfl) >= jpj-1 ) THEN 
    410                   ijdw(jfl,jind1) = jpj + jind1 - 4 
    411                ELSE 
    412                   ijdw(jfl,jind1) = ijlw(jfl) + jind1 - 2 
     367            IF( ijlw(jfl) <= 2 ) THEN          ;   ijdw(jfl,jind1) = jind1 
     368            ELSE 
     369               IF( ijlw(jfl) >= jpj-1 ) THEN   ;   ijdw(jfl,jind1) = jpj       + jind1 - 4 
     370               ELSE                            ;   ijdw(jfl,jind1) = ijlw(jfl) + jind1 - 2 
    413371               ENDIF 
    414372            ENDIF 
    415373            ! k-direction 
    416             IF( iklw(jfl) <= 2 ) THEN 
    417                ikdw(jfl,jind1) = jind1 
    418             ELSE 
    419                IF( iklw(jfl) >= jpk-1 ) THEN 
    420                   ikdw(jfl,jind1) = jpk + jind1 - 4 
    421                ELSE 
    422                   ikdw(jfl,jind1) = iklw(jfl) + jind1 - 2 
    423                ENDIF 
    424             ENDIF 
    425          END DO 
    426       END DO 
    427       DO jind1 = 1, 4 
    428          DO jfl = 1, jpnfl 
    429             IF( iklw(jfl) <= 2 ) THEN 
    430                ikdw(jfl,jind1) = jind1 
    431             ELSE 
    432                IF( iklw(jfl) >= jpk-1 ) THEN 
    433                   ikdw(jfl,jind1) = jpk + jind1 - 4 
    434                ELSE 
    435                   ikdw(jfl,jind1) = iklw(jfl) + jind1 - 2 
     374            IF( iklw(jfl) <= 2 ) THEN          ;   ikdw(jfl,jind1) = jind1 
     375            ELSE 
     376               IF( iklw(jfl) >= jpk-1 ) THEN   ;   ikdw(jfl,jind1) = jpk       + jind1 - 4 
     377               ELSE                            ;   ikdw(jfl,jind1) = iklw(jfl) + jind1 - 2 
     378               ENDIF 
     379            ENDIF 
     380         END DO 
     381      END DO 
     382      DO jind1 = 1, 4 
     383         DO jfl = 1, jpnfl 
     384            IF( iklw(jfl) <= 2 ) THEN          ;   ikdw(jfl,jind1) = jind1 
     385            ELSE 
     386               IF( iklw(jfl) >= jpk-1 ) THEN   ;   ikdw(jfl,jind1) = jpk       + jind1 - 4 
     387               ELSE                            ;   ikdw(jfl,jind1) = iklw(jfl) + jind1 - 2 
    436388               ENDIF 
    437389            ENDIF 
     
    440392       
    441393      ! Lagrange coefficients  for w interpolation 
    442        
    443394      DO jfl = 1, jpnfl 
    444395         DO jind1 = 1, 4 
     
    448399         END DO 
    449400      END DO 
    450         
    451401      DO jind1 = 1, 4 
    452402         DO jind2 = 1, 4 
    453403            DO jfl = 1, jpnfl 
    454404               IF( jind1 /= jind2 ) THEN 
    455                   zlagxw(jfl,jind1) = zlagxw(jfl,jind1) * (pxt(jfl) - (float(iidw(jfl,jind2))) ) 
    456                   zlagyw(jfl,jind1) = zlagyw(jfl,jind1) * (pyt(jfl) - (float(ijdw(jfl,jind2))) ) 
     405                  zlagxw(jfl,jind1) = zlagxw(jfl,jind1) * (pxt(jfl) - (float(iidw(jfl,jind2))   ) ) 
     406                  zlagyw(jfl,jind1) = zlagyw(jfl,jind1) * (pyt(jfl) - (float(ijdw(jfl,jind2))   ) ) 
    457407                  zlagzw(jfl,jind1) = zlagzw(jfl,jind1) * (pzt(jfl) - (float(ikdw(jfl,jind2))-.5) ) 
    458408               ENDIF 
     
    462412       
    463413      ! velocity w  when we compute at middle time step 
    464        
    465414      DO jfl = 1, jpnfl 
    466415         DO jind1 = 1, 4 
     
    468417               DO jind3 = 1, 4 
    469418                  ztwfl(jfl,jind1,jind2,jind3)=   & 
    470                      &   ( tcoef1(kind) * wb(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3))+   & 
    471                      &     tcoef2(kind) * wn(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) )  & 
    472 !!bug e3w instead of fse3  
    473                      &   / e3w(ikdw(jfl,jind3)) 
     419                     &   ( tcoef1(ki) * wb(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3))+   & 
     420                     &     tcoef2(ki) * wn(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) )  & 
     421                     &   / fse3w(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) 
    474422               END DO 
    475423            END DO 
    476424         END DO 
    477425          
    478          zsumw=0. 
     426         zsumw = 0.e0 
    479427         DO jind1 = 1, 4 
    480428            DO jind2 = 1, 4 
     
    487435         pwfl(jfl) = zsumw 
    488436      END DO 
    489        
     437      !    
    490438   END SUBROUTINE flo_interp 
    491439 
    492440#  else 
    493441   !!---------------------------------------------------------------------- 
    494    !!   Default option                                         Empty module 
    495    !!---------------------------------------------------------------------- 
    496 CONTAINS 
    497    SUBROUTINE flo_4rk                 ! Empty routine 
    498    END SUBROUTINE flo_4rk 
     442   !!   No floats                                              Dummy module 
     443   !!---------------------------------------------------------------------- 
    499444#endif 
    500445    
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/FLO/flo_oce.F90

    r2287 r2345  
    2020   !! float parameters 
    2121   !! ---------------- 
    22    INTEGER, PUBLIC, PARAMETER ::   jpnfl     = 23 ,                !: total number of floats during the run 
    23    INTEGER, PUBLIC, PARAMETER ::   jpnnewflo =  0 ,                !: number of floats added in a new run 
     22   INTEGER, PUBLIC, PARAMETER ::   jpnfl     = 23                  !: total number of floats during the run 
     23   INTEGER, PUBLIC, PARAMETER ::   jpnnewflo =  0                  !: number of floats added in a new run 
    2424   INTEGER, PUBLIC, PARAMETER ::   jpnrstflo = jpnfl - jpnnewflo   !: number of floats for the restart 
    2525 
    2626   !! float variables 
    2727   !! --------------- 
    28    INTEGER, PUBLIC, DIMENSION(jpnfl) ::   nisobfl   !: =0 for a isobar float , =1 for a float following the w velocity 
    29    INTEGER, PUBLIC, DIMENSION(jpnfl) ::   ngrpfl    !: number to identify searcher group 
     28   INTEGER , PUBLIC, DIMENSION(jpnfl) ::   nisobfl   !: =0 for a isobar float , =1 for a float following the w velocity 
     29   INTEGER , PUBLIC, DIMENSION(jpnfl) ::   ngrpfl    !: number to identify searcher group 
    3030 
    31    REAL(wp), PUBLIC, DIMENSION(jpnfl) ::   flxx , flyy , flzz    !: longitude, latitude, depth of float (decimal degree, m >0) 
     31   REAL(wp), PUBLIC, DIMENSION(jpnfl) ::   flxx , flyy , flzz    !: long, lat, depth of float (decimal degree, m >0) 
    3232   REAL(wp), PUBLIC, DIMENSION(jpnfl) ::   tpifl, tpjfl, tpkfl   !: (i,j,k) indices of float position 
    3333 
    34    REAL(wp), PUBLIC, DIMENSION(jpi, jpj, jpk) ::   wb            !: vertical velocity at previous time step (m s-1). 
     34   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   wb              !: vertical velocity at previous time step (m s-1). 
    3535    
    36    !                                  !!! * namelist namflo : langrangian floats * 
     36   !                                            !!! * namelist namflo : langrangian floats * 
    3737   LOGICAL, PUBLIC  ::   ln_rstflo  = .FALSE.    !: T/F float restart  
    3838   LOGICAL, PUBLIC  ::   ln_argo    = .FALSE.    !: T/F argo type floats 
    3939   LOGICAL, PUBLIC  ::   ln_flork4  = .FALSE.    !: T/F 4th order Runge-Kutta 
    40    INTEGER, PUBLIC  ::   nn_writefl = 150       !: frequency of float output file  
    41    INTEGER, PUBLIC  ::   nn_stockfl = 450       !: frequency of float restart file 
     40   INTEGER, PUBLIC  ::   nn_writefl = 150        !: frequency of float output file  
     41   INTEGER, PUBLIC  ::   nn_stockfl = 450        !: frequency of float restart file 
    4242 
    4343#else 
     
    5151   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    5252   !! $Id$  
    53    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     53   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    5454   !!====================================================================== 
    5555END MODULE flo_oce 
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/FLO/floats.F90

    r2287 r2345  
    1414   !!   flo_init  : initialization of float trajectories computation 
    1515   !!---------------------------------------------------------------------- 
     16   USE oce             ! ocean variables 
    1617   USE flo_oce         ! floats variables 
    1718   USE lib_mpp         ! distributed memory computing 
     
    2021   USE flo4rk          ! Trajectories, Runge Kutta scheme (flo_4rk routine) 
    2122   USE floblk          ! Trajectories, Blanke scheme      (flo_blk routine) 
     23   USE in_out_manager  ! I/O manager 
    2224 
    2325   IMPLICIT NONE 
     
    3032   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    3133   !! $Id$  
    32    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     34   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3335   !!---------------------------------------------------------------------- 
    34  
    3536CONTAINS 
    3637 
     
    7980      !! ** Purpose :   Read the namelist of floats 
    8081      !!---------------------------------------------------------------------- 
    81       USE ioipsl 
    82       !! 
    8382      NAMELIST/namflo/ ln_rstflo, nn_writefl, nn_stockfl, ln_argo, ln_flork4  
    8483      !!--------------------------------------------------------------------- 
     
    9089         WRITE(numout,*) 
    9190         WRITE(numout,*) '         Namelist floats :' 
    92          WRITE(numout,*) '            restart                          ln_rstflo = ', ln_rstflo 
    93          WRITE(numout,*) '            frequency of float output file   nn_writefl  = ', nn_writefl 
    94          WRITE(numout,*) '            frequency of float restart file  nn_stockfl  = ', nn_stockfl 
    95          WRITE(numout,*) '            Argo type floats                 ln_argo   = ', ln_argo 
    96          WRITE(numout,*) '            Computation of T trajectories    ln_flork4 = ', ln_flork4 
     91         WRITE(numout,*) '            restart                          ln_rstflo  = ', ln_rstflo 
     92         WRITE(numout,*) '            frequency of float output file   nn_writefl = ', nn_writefl 
     93         WRITE(numout,*) '            frequency of float restart file  nn_stockfl = ', nn_stockfl 
     94         WRITE(numout,*) '            Argo type floats                 ln_argo    = ', ln_argo 
     95         WRITE(numout,*) '            Computation of T trajectories    ln_flork4  = ', ln_flork4 
    9796      ENDIF 
    9897      ! 
Note: See TracChangeset for help on using the changeset viewer.