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 15 for trunk/NEMO/OPA_SRC/cla_dynspg.F90 – NEMO

Ignore:
Timestamp:
2004-02-17T08:25:44+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE001 : First major NEMO update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/cla_dynspg.F90

    r3 r15  
    11MODULE cla_dynspg 
    2    !!---------------------------------------------------------------------- 
    3    !!                 ***  dynspg_freesurf_cstvol.h90  *** 
    4    !!---------------------------------------------------------------------- 
     2   !!====================================================================== 
     3   !!                       ***  cla_dynspg  *** 
     4   !!====================================================================== 
    55   !!   dyn_spg      : update the momentum trend with the surface pressure 
    66   !!                  gradient in the free surface constant volume case 
     
    5959      INTEGER, INTENT( in ) ::   kt           ! ocean time-step 
    6060      !! * Local declarations 
    61       INTEGER ::   ji, jj, jk                 ! dummy loop indices 
     61      INTEGER  ::   ji, jj, jk                ! dummy loop indices 
     62      INTEGER  ::   ii0, ii1, ij0, ij1        ! temporary integer 
    6263      REAL(wp) ::    &     
    6364         zempmed, zempred,   &                ! EMP on Med Sea ans Red Sea 
     
    8384      zempmed = 0.e0 
    8485      zwei = 0.e0 
    85       DO jj = mj0(96), mj1(110) 
    86          DO ji = mi0(141),mi1(181) 
     86      ij0 =  96   ;   ij1 = 110 
     87      ii0 = 141   ;   ii1 = 181 
     88      DO jj = mj0(ij0), mj1(ij1) 
     89         DO ji = mi0(ii0),mi1(ii1) 
    8790            zwei    = tmask(ji,jj,1) * e1t(ji,jj) * e2t(ji,jj) 
    8891            zempmed = zempmed + emp(ji,jj) * zwei 
    8992         END DO 
    9093      END DO 
    91  
    92       ! mpp 
    93 # if defined key_mpp 
    94       CALL mpp_sum( zempmed ) 
    95 # endif 
     94      IF( lk_mpp )   CALL mpp_sum( zempmed )      ! sum with other processors value 
    9695 
    9796      ! minus 2 points in Red Sea and 3 in Atlantic  
    98       DO jj = mj0(96), mj1(96) 
    99          DO ji = mi0(148),mi1(148) 
     97      ij0 =  96   ;   ij1 =  96 
     98      ii0 = 148   ;   ii1 = 148 
     99      DO jj = mj0(ij0), mj1(ij1) 
     100         DO ji = mi0(ii0),mi1(ii1) 
    100101            zempmed = zempmed - emp(ji  ,jj) * tmask(ji  ,jj,1) * e1t(ji  ,jj) * e2t(ji  ,jj)   & 
    101102               &              - emp(ji+1,jj) * tmask(ji+1,jj,1) * e1t(ji+1,jj) * e2t(ji+1,jj)    
     
    108109      zempred = 0.e0 
    109110      zwei = 0.e0 
    110       DO jj = mj0(87), mj1(96) 
    111          DO ji = mi0(148), mi1(160)  
     111      ij0 =  87   ;   ij1 =  96 
     112      ii0 = 148   ;   ii1 = 160 
     113      DO jj = mj0(ij0), mj1(ij1) 
     114         DO ji = mi0(ii0),mi1(ii1) 
    112115            zwei      = tmask(ji,jj,1) * e1t(ji,jj) * e2t(ji,jj) 
    113116            zempred   = zempred + emp(ji,jj) * zwei 
    114117         END DO 
    115118      END DO 
    116  
    117       ! mpp 
    118 # if defined key_mpp 
    119       CALL mpp_sum( zempred ) 
    120 # endif 
     119      IF( lk_mpp )   CALL mpp_sum( zempred )      ! sum with other processors value 
    121120 
    122121      ! we convert in m3 
     
    143142      ! Bab el Mandeb 
    144143      ! ------------- 
    145       DO jj = mj0(88), mj1(88)  
    146          DO ji = mi0(160), mi1(160)  
     144      ! 160,88 north point Bab el Mandeb 
     145      ij0 =  88   ;   ij1 =  88 
     146      ii0 = 160   ;   ii1 = 160 
     147      DO jj = mj0(ij0), mj1(ij1) 
     148         DO ji = mi0(ii0),mi1(ii1) 
    147149            ua(ji,jj  ,: ) = 0.e0  !  North East Bab el Mandeb  
    148             ua(ji,jj-1,: ) = 0.e0  !  South East Bab el Mandeb 
    149          END DO 
    150       END DO 
    151   
    152       ! 160,87 north point Bab el Mandeb 
    153       ! surface 
     150         END DO 
     151      END DO 
     152      !                              ! surface 
    154153      DO jk = 1,  8                                       
    155          DO jj = mj0(88), mj1(88)  
    156             DO ji = mi0(160), mi1(160)  
     154         DO jj = mj0(ij0), mj1(ij1) 
     155            DO ji = mi0(ii0),mi1(ii1) 
    157156               ua(ji, jj,jk) = -( ( zisw_rs + zempred ) / 8. ) / ( e2u(ji, jj) * fse3t(ji, jj,jk) )      
    158157            END DO 
    159158         END DO 
    160159      END DO 
    161  
    162       ! deeper 
    163       DO jj = mj0(88), mj1(88)  
    164          DO ji = mi0(160), mi1(160)  
     160      !                              ! deeper 
     161      DO jj = mj0(ij0), mj1(ij1) 
     162         DO ji = mi0(ii0),mi1(ii1) 
    165163            ua(ji, jj,21) = - zbrw_rs / ( e2u(ji, jj) * fse3t(ji, jj,21) ) 
    166164         END DO 
     
    168166 
    169167      ! 160,87 south point Bab el Mandeb 
    170       DO jj = mj0(87), mj1(87)  
    171          DO ji = mi0(160), mi1(160)  
     168      ij0 =  87   ;   ij1 =  87 
     169      ii0 = 160   ;   ii1 = 160 
     170      DO jj = mj0(ij0), mj1(ij1) 
     171         DO ji = mi0(ii0),mi1(ii1) 
     172            ua(ji,jj  ,: ) = 0.e0  !  South East Bab el Mandeb  
     173         END DO 
     174      END DO 
     175      DO jj = mj0(ij0), mj1(ij1) 
     176         DO ji = mi0(ii0),mi1(ii1) 
    172177            ua(ji, jj,21) =  ( zisw_rs + zbrw_rs ) / ( e2u(ji,jj )*fse3t(ji, jj,21) )       
    173178         END DO 
     
    178183 
    179184      ! initialisation of velocity at concerned points  
    180       DO jj = mj0(101), mj1(101)  
    181          DO ji = mi0(139), mi1(139)  
     185      ! 139, 101 south point in Gibraltar  
     186      ij0 = 101   ;   ij1 = 101 
     187      ii0 = 139   ;   ii1 = 139 
     188      DO jj = mj0(ij0), mj1(ij1) 
     189         DO ji = mi0(ii0),mi1(ii1) 
    182190            ua(ji,jj  ,: ) = 0.e0  !  South West Gibraltar 
    183191            ua(ji,jj+1,: ) = 0.e0  !  North West Gibraltar 
    184192         END DO 
    185193      END DO 
    186  
    187       ! 139, 101 south point in Gibraltar  
    188       ! surface 
     194      !                            ! surface 
    189195      DO jk = 1, 14                       
    190          DO jj = mj0(101), mj1(101)  
    191             DO ji = mi0(139), mi1(139)  
     196         DO jj = mj0(ij0), mj1(ij1) 
     197            DO ji = mi0(ii0),mi1(ii1) 
    192198               ua(ji,jj,jk) =  ( ( zisw_ms + zempmed ) / 14. ) / ( e2u(ji,jj) * fse3t(ji,jj,jk) )  
    193199            END DO 
    194200         END DO 
    195201      END DO 
    196  
    197       ! middle circulation 
     202      !                            ! middle circulation 
    198203      DO jk = 15, 20                       
    199          DO jj = mj0(101), mj1(101)  
    200             DO ji = mi0(139), mi1(139)  
     204         DO jj = mj0(ij0), mj1(ij1) 
     205            DO ji = mi0(ii0),mi1(ii1) 
    201206               ua(ji,jj,jk) =  ( zmrw_ms / 6. ) / ( e2u(ji,jj) * fse3t(ji,jj,jk) )  
    202207            END DO 
    203208         END DO 
    204209      END DO 
    205  
    206       ! deeper  
    207       DO jj = mj0(101), mj1(101)  
    208          DO ji = mi0(139), mi1(139)  
     210      !                            ! deeper  
     211      DO jj = mj0(ij0), mj1(ij1) 
     212         DO ji = mi0(ii0),mi1(ii1) 
    209213            ua(ji,jj,21) =             zurw_ms   / ( e2u(ji,jj) * fse3t(ji,jj,21) ) 
    210214            ua(ji,jj,22) = ( zbrw_ms - zurw_ms ) / ( e2u(ji,jj) * fse3t(ji,jj,22) ) 
     
    213217 
    214218      ! 139,102 north point in Gibraltar 
     219      ij0 = 102   ;   ij1 = 102 
     220      ii0 = 139   ;   ii1 = 139 
     221      DO jj = mj0(ij0), mj1(ij1) 
     222         DO ji = mi0(ii0),mi1(ii1) 
     223            ua(ji,jj  ,: ) = 0.e0  !  North West Gibraltar 
     224         END DO 
     225      END DO 
    215226      DO jk = 15, 20                       
    216          DO jj = mj0(102), mj1(102)  
    217             DO ji = mi0(139), mi1(139)  
     227         DO jj = mj0(ij0), mj1(ij1) 
     228            DO ji = mi0(ii0),mi1(ii1) 
    218229               ua(ji,jj,jk) = -( zmrw_ms / 6. ) / ( e2u(ji,jj) * fse3t(ji,jj,jk) )  
    219230            END DO 
    220231         END DO 
    221232      END DO 
    222  
    223       ! deeper 
    224       DO jj = mj0(102), mj1(102)  
    225          DO ji = mi0(139), mi1(139)  
     233      !                            ! deeper 
     234      DO jj = mj0(ij0), mj1(ij1) 
     235         DO ji = mi0(ii0),mi1(ii1) 
    226236            ua(ji,jj,22) = -( zisw_ms + zbrw_ms ) / ( e2u(ji,jj) * fse3t(ji,jj,22) ) 
    227237         END DO 
     
    229239 
    230240   END SUBROUTINE dyn_spg_cla 
     241 
     242   !!====================================================================== 
    231243END MODULE cla_dynspg 
Note: See TracChangeset for help on using the changeset viewer.