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 31 for trunk/NEMO/OPA_SRC/DYN – NEMO

Changeset 31 for trunk/NEMO/OPA_SRC/DYN


Ignore:
Timestamp:
2004-02-17T10:19:59+01:00 (20 years ago)
Author:
opalod
Message:

CT : BUGFIX012 : Running problem for EEL5 configuration is solved

Location:
trunk/NEMO/OPA_SRC/DYN
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynspg_fsc.F90

    r3 r31  
    4141 
    4242   !! * Shared module variables 
    43    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc = .TRUE.    ! free surface constant volume flag 
     43   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc = .TRUE.    !: free surface constant volume flag 
    4444 
    4545   !! * Substitutions 
     
    8080      !!         where (spgu,spgv) are given by: 
    8181      !!            spgu = vertical sum[ e3u (ub+ 2 rdt ua ) ] 
    82       !!                 - g 2 rdt hu /e1u di[sshn + emp] 
     82      !!                 - grav 2 rdt hu /e1u di[sshn + emp] 
    8383      !!            spgv = vertical sum[ e3v (vb+ 2 rdt va) ] 
    84       !!                 - g 2 rdt hv /e2v dj[sshn + emp] 
     84      !!                 - grav 2 rdt hv /e2v dj[sshn + emp] 
    8585      !!         and define the first guess from previous computation : 
    8686      !!            zbtd = btda 
     
    127127         spgu(:,:) = 0.e0                     ! surface pressur gradient (i-direction) 
    128128         spgv(:,:) = 0.e0                     ! surface pressur gradient (j-direction) 
    129          IF( .NOT.ln_rstart ) THEN  
    130             sshb(:,:) = 0.e0                     ! before sea-surface height 
    131             sshn(:,:) = 0.e0                     ! now    sea-surface height 
    132          ENDIF 
    133129      ENDIF 
    134130 
     
    140136      IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 
    141137      ! coefficients 
    142       z2dtg  = g * z2dt 
     138      z2dtg  = grav * z2dt 
    143139      zraur  = 1. / rauw 
    144       znugdt =  rnu * g * z2dt 
     140      znugdt =  rnu * grav * z2dt 
    145141      znurau =  znugdt * zraur 
    146 #if defined key_mpp 
    147       ! Mpp : export boundary values of to neighboring processors 
    148       !!bug :  I don t understand why this only in mpp???? 
    149       CALL lbc_lnk( ua, 'U', -1. ) 
    150       CALL lbc_lnk( va, 'V', -1. ) 
    151 #endif 
     142      IF( lk_mpp ) THEN 
     143         ! Mpp : export boundary values of to neighboring processors 
     144         !!bug :  I don t understand why this only in mpp???? ==> Can be suppressed, no? 
     145         CALL lbc_lnk( ua, 'U', -1. ) 
     146         CALL lbc_lnk( va, 'V', -1. ) 
     147      ENDIF 
    152148 
    153149      ! 1. Surface pressure gradient (now) 
     
    155151      DO jj = 2, jpjm1 
    156152         DO ji = fs_2, fs_jpim1   ! vector opt. 
    157             zspgu =      - g * ( sshn(ji+1,jj) - sshn(ji,jj) ) / e1u(ji,jj) 
    158             zspgv =      - g * ( sshn(ji,jj+1) - sshn(ji,jj) ) / e2v(ji,jj) 
     153            zspgu =      - grav * ( sshn(ji+1,jj) - sshn(ji,jj) ) / e1u(ji,jj) 
     154            zspgv =      - grav * ( sshn(ji,jj+1) - sshn(ji,jj) ) / e2v(ji,jj) 
    159155            zegu  = + znurau * ( emp (ji+1,jj) - emp (ji,jj) ) / e1u(ji,jj) 
    160156            zegv  = + znurau * ( emp (ji,jj+1) - emp (ji,jj) ) / e2v(ji,jj) 
     
    222218      ! vertical sum 
    223219!CDIR NOLOOPCHG 
    224       DO jk = 1, jpkm1 
    225 #if defined key_vectopt_loop 
    226          DO ji = 1, jpij                 ! vector opt. 
    227             spgu(ji,1) = spgu(ji,1) + fse3u(ji,1,jk) * ua(ji,1,jk) 
    228             spgv(ji,1) = spgv(ji,1) + fse3v(ji,1,jk) * va(ji,1,jk) 
    229          END DO 
    230 #else 
    231          DO jj = 2, jpjm1 
    232             DO ji = 2, jpim1             ! NO vector opt. 
    233                spgu(ji,jj) = spgu(ji,jj) + fse3u(ji,jj,jk) * ua(ji,jj,jk) 
    234                spgv(ji,jj) = spgv(ji,jj) + fse3v(ji,jj,jk) * va(ji,jj,jk) 
    235             END DO 
    236          END DO 
    237 #endif 
    238       END DO 
     220      IF( lk_vopt_loop ) THEN          ! vector opt., forced unroll 
     221         DO jk = 1, jpkm1 
     222            DO ji = 1, jpij 
     223               spgu(ji,1) = spgu(ji,1) + fse3u(ji,1,jk) * ua(ji,1,jk) 
     224               spgv(ji,1) = spgv(ji,1) + fse3v(ji,1,jk) * va(ji,1,jk) 
     225            END DO 
     226         END DO 
     227      ELSE                        ! No  vector opt. 
     228         DO jk = 1, jpkm1 
     229            DO jj = 2, jpjm1 
     230               DO ji = 2, jpim1 
     231                  spgu(ji,jj) = spgu(ji,jj) + fse3u(ji,jj,jk) * ua(ji,jj,jk) 
     232                  spgv(ji,jj) = spgv(ji,jj) + fse3v(ji,jj,jk) * va(ji,jj,jk) 
     233               END DO 
     234            END DO 
     235         END DO 
     236      ENDIF 
    239237 
    240238      ! transport: multiplied by the horizontal scale factor 
     
    274272         END DO 
    275273      END DO 
    276 #if defined key_mpp 
    277       CALL mpp_sum( rnorme ) 
    278 #endif 
     274      IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain 
     275 
    279276      epsr = eps * eps * rnorme 
    280277      ncut = 0 
     
    296293            CALL sol_pcg( kindic ) 
    297294         ELSEIF( nsolv == 2 ) THEN     ! successive-over-relaxation 
    298             CALL sol_sor( kt, kindic ) 
     295            CALL sol_sor( kindic ) 
    299296         ELSEIF( nsolv == 3 ) THEN     ! FETI solver 
    300297            CALL sol_fet( kindic ) 
     
    391388   !!   Default case :   Empty module   No standart free surface cst volume 
    392389   !!---------------------------------------------------------------------- 
    393    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc = .FALSE.   ! free surface constant volume flag 
     390   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc = .FALSE.   !: free surface constant volume flag 
    394391CONTAINS 
    395392   SUBROUTINE dyn_spg_fsc( kt, kindic )       ! Empty routine 
    396       WRITE(*,*) kt, kindic 
     393      WRITE(*,*) 'dyn_spg_fsc: You should not have seen this print! error?', kt, kindic 
    397394   END SUBROUTINE dyn_spg_fsc 
    398395#endif 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_fsc_atsk.F90

    r3 r31  
    4343 
    4444   !! * Shares module variables 
    45    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc_tsk = .TRUE.    ! free surf. cst vol. flag 
     45   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc_tsk = .TRUE.    !: free surf. cst vol. flag 
    4646 
    4747   !! * Substitutions 
     
    8181      !!         where (spgu,spgv) are given by: 
    8282      !!            spgu = vertical sum[ e3u (ub+ 2 rdt ua ) ] 
    83       !!                 - g 2 rdt hu /e1u di[sshn + emp] 
     83      !!                 - grav 2 rdt hu /e1u di[sshn + emp] 
    8484      !!            spgv = vertical sum[ e3v (vb+ 2 rdt va) ] 
    85       !!                 - g 2 rdt hv /e2v dj[sshn + emp] 
     85      !!                 - grav 2 rdt hv /e2v dj[sshn + emp] 
    8686      !!         and define the first guess from previous computation : 
    8787      !!            zbtd = btda 
     
    128128         spgu(:,:) = 0.e0      ! surface pressure gradient (i-direction) 
    129129         spgv(:,:) = 0.e0      ! surface pressure gradient (j-direction) 
    130          IF( .NOT.ln_rstart ) THEN  
    131             sshb(:,:) = 0.e0      ! before sea-surface height  
    132             sshn(:,:) = 0.e0      ! now    sea-surface height  
    133          ENDIF 
    134130      ENDIF 
    135131 
     
    141137      IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 
    142138      ! coefficients 
    143       z2dtg  = g * z2dt 
     139      z2dtg  = grav * z2dt 
    144140      zraur  = 1. / rauw 
    145       znugdt =  rnu * g * z2dt 
     141      znugdt =  rnu * grav * z2dt 
    146142      znurau =  znugdt * zraur 
    147 #if defined key_mpp 
    148       ! Mpp : export boundary values of to neighboring processors 
    149       !!bug ???  why only in mpp?  is it really needed??? 
    150       CALL lbc_lnk( ua, 'U' , -1. ) 
    151       CALL lbc_lnk( va, 'V' , -1. ) 
    152 #endif 
     143      IF( lk_mpp ) THEN 
     144         ! Mpp : export boundary values of to neighboring processors 
     145         !!bug ???  why only in mpp?  is it really needed??? 
     146         CALL lbc_lnk( ua, 'U' , -1. ) 
     147         CALL lbc_lnk( va, 'V' , -1. ) 
     148      ENDIF 
     149 
    153150      !                                                ! =============== 
    154151      DO jj = 2, jpjm1                                 !  Vertical slab 
     
    157154         ! ---------------------------- 
    158155         DO ji = 2, jpim1 
    159             zspgu =      - g * ( sshn(ji+1,jj) - sshn(ji,jj) ) / e1u(ji,jj) 
    160             zspgv =      - g * ( sshn(ji,jj+1) - sshn(ji,jj) ) / e2v(ji,jj) 
     156            zspgu =   - grav * ( sshn(ji+1,jj) - sshn(ji,jj) ) / e1u(ji,jj) 
     157            zspgv =   - grav * ( sshn(ji,jj+1) - sshn(ji,jj) ) / e2v(ji,jj) 
    161158            zegu  = + znurau * ( emp (ji+1,jj) - emp (ji,jj) ) / e1u(ji,jj) 
    162159            zegv  = + znurau * ( emp (ji,jj+1) - emp (ji,jj) ) / e2v(ji,jj) 
     
    286283         END DO 
    287284      END DO 
    288 #if defined key_mpp 
    289       CALL mpp_sum( rnorme ) 
    290 #endif 
     285      IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain 
     286 
    291287      epsr = eps * eps * rnorme 
    292288      ncut = 0 
     
    310306            CALL sol_pcg( kindic ) 
    311307         ELSEIF( nsolv == 2 ) THEN     ! successive-over-relaxation 
    312             CALL sol_sor( kt, kindic ) 
     308            CALL sol_sor( kindic ) 
    313309         ELSEIF( nsolv == 3 ) THEN     ! FETI solver 
    314310            CALL sol_fet( kindic ) 
     
    400396   !!   Default case :                                         Empty module 
    401397   !!---------------------------------------------------------------------- 
    402    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc_tsk = .FALSE.   ! free surf. cst vol. flag 
     398   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_fsc_tsk = .FALSE.   !: free surf. cst vol. flag 
    403399CONTAINS 
    404400   SUBROUTINE dyn_spg_fsc_atsk( kt, kindic )      ! Empty module 
    405       WRITE(*,*) kt, kindic 
     401      WRITE(*,*) 'dyn_spg_fsc_atsk: You should not have seen this print! error?', kt, kindic 
    406402   END SUBROUTINE dyn_spg_fsc_atsk 
    407403#endif 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_rl.F90

    r3 r31  
    3636 
    3737   !! * Shared module variables 
    38    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_rl = .TRUE.   ! rigid-lid flag 
     38   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_rl = .TRUE.    !: rigid-lid flag 
    3939 
    4040   !! * Substitutions 
    4141#  include "domzgr_substitute.h90" 
    4242#  include "vectopt_loop_substitute.h90" 
     43#  include "obc_vectopt_loop_substitute.h90" 
    4344   !!---------------------------------------------------------------------- 
    4445   !!   OPA 9.0 , LODYC-IPSL  (2003) 
     
    115116         spgu(:,:) = 0.e0      ! surface pressure gradient (i-direction)  
    116117         spgv(:,:) = 0.e0      ! surface pressure gradient (j-direction) 
    117          bsfb(:,:) = 0.e0      ! before barotropic stream-function 
    118          bsfn(:,:) = 0.e0      ! now    barotropic stream-function 
    119          bsfd(:,:) = 0.e0      ! barotropic stream-function trend 
    120118      ENDIF 
    121119 
     
    209207         END DO 
    210208      END DO 
    211 # if defined key_mpp 
    212       CALL mpp_sum( rnorme ) 
    213 # endif 
     209      IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain 
     210 
    214211      epsr = eps*eps*rnorme 
    215212      ncut = 0 
     
    229226            CALL sol_pcg( kindic ) 
    230227         CASE( 2 )                     ! successive-over-relaxation 
    231             CALL sol_sor( kt, kindic ) 
     228            CALL sol_sor( kindic ) 
    232229         CASE( 3 )                     ! FETI solver 
    233230            CALL sol_fet( kindic ) 
     
    400397         END DO 
    401398      END DO 
    402 #   if defined key_mpp 
    403       CALL mppobc( bebnd, jpjed, jpjef, jpieob, 3*3, 2, jpj ) 
    404 #   endif 
     399      IF( lk_mpp )   CALL mppobc( bebnd, jpjed, jpjef, jpieob, 3*3, 2, jpj ) 
    405400      ENDIF 
    406401 
     
    436431         END DO 
    437432      END DO 
    438 #   if defined key_mpp 
    439       CALL mppobc( bwbnd, jpjwd, jpjwf, jpiwob, 3*3, 2, jpj ) 
    440 #   endif 
     433      IF( lk_mpp )   CALL mppobc( bwbnd, jpjwd, jpjwf, jpiwob, 3*3, 2, jpj ) 
    441434      ENDIF 
    442435 
     
    472465         END DO 
    473466      END DO 
    474 #   if defined key_mpp 
    475       CALL mppobc( bnbnd, jpind, jpinf, jpjnob, 3*3, 1, jpi ) 
    476 #   endif 
     467      IF( lk_mpp )   CALL mppobc( bnbnd, jpind, jpinf, jpjnob, 3*3, 1, jpi ) 
    477468      ENDIF 
    478469 
    479470      IF( lpsouthobc ) THEN 
    480       ! njsob,(jpsd,jpsf) 
    481       IF( kt < nit000+3 .AND. .NOT.ln_rstart ) THEN 
    482          DO ji = nis0m1, nis1 
    483             ! fields itm2 <== itm 
    484             bsbnd(ji,ib  ,itm2) = bsbnd(ji,ib  ,itm) 
    485             bsbnd(ji,ibm ,itm2) = bsbnd(ji,ibm ,itm) 
    486             bsbnd(ji,ibm2,itm2) = bsbnd(ji,ibm2,itm) 
    487             bsbnd(ji,ib  ,itm ) = bsbnd(ji,ib  ,it ) 
    488          END DO 
    489       ELSE 
    490          DO jj = fs_njs0, fs_njs1   ! vector opt. 
     471         ! njsob,(jpsd,jpsf) 
     472         IF( kt < nit000+3 .AND. .NOT.ln_rstart ) THEN 
    491473            DO ji = nis0m1, nis1 
     474               ! fields itm2 <== itm 
    492475               bsbnd(ji,ib  ,itm2) = bsbnd(ji,ib  ,itm) 
    493476               bsbnd(ji,ibm ,itm2) = bsbnd(ji,ibm ,itm) 
    494477               bsbnd(ji,ibm2,itm2) = bsbnd(ji,ibm2,itm) 
    495                ! fields itm <== it  plus time filter at the boundary 
    496                bsbnd(jj,ib  ,itm ) = atfp * ( bsbnd(jj,ib,itm) + bsfn(ji,jj) ) + atfp1 * bsbnd(jj,ib,it) 
    497                bsbnd(ji,ibm ,itm ) = bsbnd(ji,ibm ,it ) 
    498                bsbnd(ji,ibm2,itm ) = bsbnd(ji,ibm2,it ) 
    499             END DO 
    500          END DO 
    501       ENDIF 
    502       DO jj = fs_njs0, fs_njs1   ! vector opt. 
    503          DO ji = nis0m1, nis1  
    504             ! fields it <== now (kt+1) 
    505             bsbnd(ji,ib  ,it  ) = bsfn (ji,jj  ) 
    506             bsbnd(ji,ibm ,it  ) = bsfn (ji,jj+1) 
    507             bsbnd(ji,ibm2,it  ) = bsfn (ji,jj+2) 
    508          END DO 
    509       END DO 
    510 #   if defined key_mpp 
    511       CALL mppobc( bsbnd, jpisd, jpisf, jpjsob, 3*3, 1, jpi ) 
    512 #   endif 
     478               bsbnd(ji,ib  ,itm ) = bsbnd(ji,ib  ,it ) 
     479            END DO 
     480         ELSE 
     481            DO jj = fs_njs0, fs_njs1   ! vector opt. 
     482               DO ji = nis0m1, nis1 
     483                  bsbnd(ji,ib  ,itm2) = bsbnd(ji,ib  ,itm) 
     484                  bsbnd(ji,ibm ,itm2) = bsbnd(ji,ibm ,itm) 
     485                  bsbnd(ji,ibm2,itm2) = bsbnd(ji,ibm2,itm) 
     486                  ! fields itm <== it  plus time filter at the boundary 
     487                  bsbnd(jj,ib  ,itm ) = atfp * ( bsbnd(jj,ib,itm) + bsfn(ji,jj) ) + atfp1 * bsbnd(jj,ib,it) 
     488                  bsbnd(ji,ibm ,itm ) = bsbnd(ji,ibm ,it ) 
     489                  bsbnd(ji,ibm2,itm ) = bsbnd(ji,ibm2,it ) 
     490               END DO 
     491            END DO 
     492         ENDIF 
     493         DO jj = fs_njs0, fs_njs1   ! vector opt. 
     494            DO ji = nis0m1, nis1  
     495               ! fields it <== now (kt+1) 
     496               bsbnd(ji,ib  ,it  ) = bsfn (ji,jj  ) 
     497               bsbnd(ji,ibm ,it  ) = bsfn (ji,jj+1) 
     498               bsbnd(ji,ibm2,it  ) = bsfn (ji,jj+2) 
     499            END DO 
     500         END DO 
     501         IF( lk_mpp )   CALL mppobc( bsbnd, jpisd, jpisf, jpjsob, 3*3, 1, jpi ) 
    513502      ENDIF 
    514503# endif 
     
    547536   !!   'key_dynspg_rl'                                        NO rigid lid 
    548537   !!---------------------------------------------------------------------- 
    549    LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_rl = .FALSE.   ! rigid-lid flag 
     538   LOGICAL, PUBLIC, PARAMETER ::   lk_dynspg_rl = .FALSE.   !: rigid-lid flag 
    550539CONTAINS 
    551540   SUBROUTINE dyn_spg_rl( kt, kindic )       ! Empty routine 
    552       WRITE(*,*) kt, kindic 
     541      WRITE(*,*) 'dyn_spg_rl: You should not have seen this print! error?', kt, kindic 
    553542   END SUBROUTINE dyn_spg_rl 
    554543#endif 
Note: See TracChangeset for help on using the changeset viewer.