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 503 for trunk/NEMO/OPA_SRC/DYN/dynhpg.F90 – NEMO

Ignore:
Timestamp:
2006-09-27T10:52:29+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_064 : CT : general trends update including the addition of mean windows analysis possibility in the mixed layer

File:
1 edited

Legend:

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

    r474 r503  
    44   !! Ocean dynamics:  hydrostatic pressure gradient trend 
    55   !!====================================================================== 
     6   !! History :  1.0  !  87-09  (P. Andrich, M.-A. Foujols)  hpg_zco: Original code 
     7   !!            5.0  !  91-11  (G. Madec) 
     8   !!            7.0  !  96-01  (G. Madec)  hpg_sco: Original code for s-coordinates 
     9   !!            8.0  !  97-05  (G. Madec)  split dynber into dynkeg and dynhpg 
     10   !!            8.5  !  02-07  (G. Madec)  F90: Free form and module 
     11   !!            8.5  !  02-08  (A. Bozec)  hpg_zps: Original code 
     12   !!            9.0  !  05-10  (A. Beckmann, B.W. An)  various s-coordinate options 
     13   !!                           Original code for hpg_ctl, hpg_hel hpg_wdj, hpg_djc, hpg_rot  
     14   !!            9.0  !  05-11  (G. Madec) style & small optimisation 
     15   !!---------------------------------------------------------------------- 
    616 
    717   !!---------------------------------------------------------------------- 
     
    1828   !!       hpg_rot  : s-coordinate (ROTated axes scheme) 
    1929   !!---------------------------------------------------------------------- 
    20    !! * Modules used 
    2130   USE oce             ! ocean dynamics and tracers 
    2231   USE dom_oce         ! ocean space and time domain 
     
    3241   PRIVATE 
    3342 
    34    !! * Accessibility 
    35    PUBLIC dyn_hpg                ! routine called by step.F90 
     43   PUBLIC   dyn_hpg    ! routine called by step module 
    3644 
    3745#if defined key_mpp_omp 
     
    4957#endif 
    5058 
    51    !! * Share module variables 
    52    LOGICAL  ::               & !!! ** nam_dynhpg **   hpg flags 
    53       ln_hpg_zco = .TRUE. ,  &  ! z-coordinate - full steps 
    54       ln_hpg_zps = .FALSE.,  &  ! z-coordinate - partial steps (interpolation) 
    55       ln_hpg_sco = .FALSE.,  &  ! s-coordinate (standard jacobian formulation) 
    56       ln_hpg_hel = .FALSE.,  &  ! s-coordinate (helsinki modification) 
    57       ln_hpg_wdj = .FALSE.,  &  ! s-coordinate (weighted density jacobian) 
    58       ln_hpg_djc = .FALSE.,  &  ! s-coordinate (Density Jacobian with Cubic polynomial) 
    59       ln_hpg_rot = .FALSE.      ! s-coordinate (ROTated axes scheme) 
    60  
    61    REAL(wp) ::               & !!! ** nam_dynhpg **  
    62       gamm = 0.e0               ! weighting coefficient 
    63  
    64    INTEGER  ::               &  !  
    65       nhpg  =  0                 ! = 0 to 6, type of pressure gradient scheme used 
    66       !                         ! (deduced from ln_hpg_... flags) 
     59   !!* Namelist nam_dynhpg : Choice of horizontal pressure gradient computation 
     60   LOGICAL  ::   ln_hpg_zco = .TRUE.    ! z-coordinate - full steps 
     61   LOGICAL  ::   ln_hpg_zps = .FALSE.   ! z-coordinate - partial steps (interpolation) 
     62   LOGICAL  ::   ln_hpg_sco = .FALSE.   ! s-coordinate (standard jacobian formulation) 
     63   LOGICAL  ::   ln_hpg_hel = .FALSE.   ! s-coordinate (helsinki modification) 
     64   LOGICAL  ::   ln_hpg_wdj = .FALSE.   ! s-coordinate (weighted density jacobian) 
     65   LOGICAL  ::   ln_hpg_djc = .FALSE.   ! s-coordinate (Density Jacobian with Cubic polynomial) 
     66   LOGICAL  ::   ln_hpg_rot = .FALSE.   ! s-coordinate (ROTated axes scheme) 
     67   REAL(wp) ::   gamm       = 0.e0      ! weighting coefficient 
     68   NAMELIST/nam_dynhpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco, ln_hpg_hel,   & 
     69      &                 ln_hpg_wdj, ln_hpg_djc, ln_hpg_rot, gamm 
     70 
     71   INTEGER  ::   nhpg  =  0             ! = 0 to 6, type of pressure gradient scheme used 
     72      !                                 ! (deduced from ln_hpg_... flags) 
    6773 
    6874   !! * Substitutions 
     
    7278   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    7379   !! $Header$  
    74    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     80   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    7581   !!---------------------------------------------------------------------- 
    7682 
     
    8288      !! 
    8389      !! ** Method  :   Call the hydrostatic pressure gradient routine  
    84       !!      using the scheme defined in the namelist (nhpg parameter) 
     90      !!              using the scheme defined in the namelist 
    8591      !!    
    8692      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    8793      !!             - Save the trend (l_trddyn=T) 
    88       !!             - Control print  (ln_ctl) 
    89       !! 
    90       !! History : 
    91       !!   9.0  !  05-10  (A. Beckmann, G. Madec) various s-coordinate options 
    92       !!---------------------------------------------------------------------- 
    93       !! * Arguments 
    94       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    95  
    96       !! * local declarations 
    97       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
    98          ztrdu, ztrdv                         ! 3D temporary workspace 
     94      !!---------------------------------------------------------------------- 
     95      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     96      !! 
     97      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrdu, ztrdv   ! 3D temporary workspace 
    9998      !!---------------------------------------------------------------------- 
    10099    
    101100      IF( kt == nit000 )   CALL hpg_ctl      ! initialisation & control of options 
    102101 
    103       ! Temporary saving of ua and va trends (l_trddyn) 
    104       IF( l_trddyn )   THEN 
     102      IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn) 
    105103         ztrdu(:,:,:) = ua(:,:,:)   
    106104         ztrdv(:,:,:) = va(:,:,:)  
     
    108106 
    109107      SELECT CASE ( nhpg )      ! Hydrastatic pressure gradient computation 
    110       CASE ( 0 )                  ! z-coordinate  
    111          CALL hpg_zco( kt ) 
    112       CASE ( 1 )                  ! z-coordinate plus partial steps (interpolation) 
    113          CALL hpg_zps( kt ) 
    114       CASE ( 2 )                  ! s-coordinate (standard jacobian formulation) 
    115          CALL hpg_sco( kt ) 
    116       CASE ( 3 )                  ! s-coordinate (helsinki modification) 
    117          CALL hpg_hel( kt ) 
    118       CASE ( 4 )                  ! s-coordinate (weighted density jacobian) 
    119          CALL hpg_wdj( kt ) 
    120       CASE ( 5 )                  ! s-coordinate (Density Jacobian with Cubic polynomial) 
    121          CALL hpg_djc( kt ) 
    122       CASE ( 6 )                  ! s-coordinate (ROTated axes scheme) 
    123          CALL hpg_rot( kt ) 
    124       CASE ( 10 )                  ! z-coordinate 
    125          CALL hpg_zco_jki( kt ) 
    126       CASE ( 11 )                  ! z-coordinate plus partial steps (interpolation) 
    127          CALL hpg_zps_jki( kt ) 
    128       CASE ( 12 )                  ! s-coordinate (standard jacobian formulation) 
    129          CALL hpg_sco_jki( kt ) 
     108      CASE (  0 )   ;   CALL hpg_zco    ( kt )      ! z-coordinate 
     109      CASE (  1 )   ;   CALL hpg_zps    ( kt )      ! z-coordinate plus partial steps (interpolation) 
     110      CASE (  2 )   ;   CALL hpg_sco    ( kt )      ! s-coordinate (standard jacobian formulation) 
     111      CASE (  3 )   ;   CALL hpg_hel    ( kt )      ! s-coordinate (helsinki modification) 
     112      CASE (  4 )   ;   CALL hpg_wdj    ( kt )      ! s-coordinate (weighted density jacobian) 
     113      CASE (  5 )   ;   CALL hpg_djc    ( kt )      ! s-coordinate (Density Jacobian with Cubic polynomial) 
     114      CASE (  6 )   ;   CALL hpg_rot    ( kt )      ! s-coordinate (ROTated axes scheme) 
     115      CASE ( 10 )   ;   CALL hpg_zco_jki( kt )      ! z-coordinate (k-j-i) 
     116      CASE ( 11 )   ;   CALL hpg_zps_jki( kt )      ! z-coordinate plus partial steps (interpolation) (k-j-i) 
     117      CASE ( 12 )   ;   CALL hpg_sco_jki( kt )      ! s-coordinate (standard jacobian formulation) (k-j-i) 
    130118      END SELECT 
    131119 
    132       ! save the hydrostatic pressure gradient trends for momentum trend diagnostics 
    133       IF( l_trddyn )   THEN 
     120      IF( l_trddyn ) THEN      ! save the hydrostatic pressure gradient trends for momentum trend diagnostics 
    134121         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 
    135122         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    136          CALL trd_mod( ztrdu, ztrdv, jpdtdhpg, 'DYN', kt ) 
     123         CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_hpg, 'DYN', kt ) 
    137124      ENDIF           
    138        
    139       IF(ln_ctl) THEN         ! print sum trends (used for debugging) 
    140          CALL prt_ctl( tab3d_1=ua, clinfo1=' hpg  - Ua: ', mask1=umask, & 
    141             &          tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    142       ENDIF 
    143        
     125      ! 
     126      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ua, clinfo1=' hpg  - Ua: ', mask1=umask,   & 
     127         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     128      ! 
    144129   END SUBROUTINE dyn_hpg 
    145130 
     
    154139      !! ** Action  :   Read the namelist namdynhpg and check the consistency 
    155140      !!      with the type of vertical coordinate used (zco, zps, sco) 
    156       !! 
    157       !! History : 
    158       !!   9.0  !  05-10  (A. Beckmann)  Original code 
    159141      !!---------------------------------------------------------------------- 
    160142      INTEGER ::   ioptio = 0      ! temporary integer 
    161  
    162       NAMELIST/nam_dynhpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco,               & 
    163          &                 ln_hpg_hel, ln_hpg_wdj, ln_hpg_djc, ln_hpg_rot,   & 
    164          &                 gamm 
    165       !!---------------------------------------------------------------------- 
    166  
    167       ! Read Namelist nam_dynhpg : pressure gradient calculation options 
    168       REWIND ( numnam ) 
     143      !!---------------------------------------------------------------------- 
     144 
     145      REWIND ( numnam )               ! Read Namelist nam_dynhpg : pressure gradient calculation options 
    169146      READ   ( numnam, nam_dynhpg ) 
    170147 
    171       ! Control print 
    172       IF(lwp) THEN 
     148      IF(lwp) THEN                    ! Control print 
    173149         WRITE(numout,*) 
    174150         WRITE(numout,*) 'dyn:hpg_ctl : hydrostatic pressure gradient control' 
     
    185161      ENDIF 
    186162 
    187       ! set nhpg from ln_hpg_... flags 
     163      !                               ! Set nhpg from ln_hpg_... flags 
    188164      IF( ln_hpg_zco )   nhpg = 0 
    189165      IF( ln_hpg_zps )   nhpg = 1 
     
    194170      IF( ln_hpg_rot )   nhpg = 6 
    195171 
    196       ! Consitency check 
     172      !                               ! Consitency check 
    197173      ioptio = 0  
    198174      IF( ln_hpg_zco )   ioptio = ioptio + 1 
     
    203179      IF( ln_hpg_djc )   ioptio = ioptio + 1 
    204180      IF( ln_hpg_rot )   ioptio = ioptio + 1 
    205       IF ( ioptio > 1 )   & 
    206            &   CALL ctl_stop( ' several hydrostatic pressure gradient options used' ) 
     181      IF ( ioptio /= 1 )   CALL ctl_stop( ' NO or several hydrostatic pressure gradient options used' ) 
    207182 
    208183      IF( lk_dynhpg_jki ) THEN 
     
    211186         IF(lwp) WRITE(numout,*) '          Autotasking or OPENMP: use j-k-i loops (i.e. _jki routines)' 
    212187      ENDIF 
    213  
     188      ! 
    214189   END SUBROUTINE hpg_ctl 
    215190 
     
    230205      !!  
    231206      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    232       !! 
    233       !! History : 
    234       !!   1.0  !  87-09  (P. Andrich, M.-A. Foujols)  Original code 
    235       !!   5.0  !  91-11  (G. Madec) 
    236       !!   7.0  !  96-01  (G. Madec) 
    237       !!   8.0  !  97-05  (G. Madec)  split dynber into dynkeg and dynhpg 
    238       !!   8.5  !  02-07  (G. Madec)  F90: Free form and module 
    239       !!---------------------------------------------------------------------- 
    240       !! * modules used 
    241       USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace 
    242          &              zhpj => sa      ! use sa as 3D workspace 
    243        
    244       !! * Arguments 
    245       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    246        
    247       !! * local declarations 
    248       INTEGER ::   ji, jj, jk           ! dummy loop indices 
    249       REAL(wp) ::   &    
    250          zcoef0, zcoef1                 ! temporary scalars 
     207      !!---------------------------------------------------------------------- 
     208      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     209      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     210      !! 
     211      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     212      !! 
     213      INTEGER  ::   ji, jj, jk       ! dummy loop indices 
     214      REAL(wp) ::   zcoef0, zcoef1   ! temporary scalars 
    251215      !!---------------------------------------------------------------------- 
    252216       
     
    257221      ENDIF 
    258222       
    259        
    260223      ! Local constant initialization  
    261       ! ----------------------------- 
    262224      zcoef0 = - grav * 0.5 
    263225 
    264226      ! Surface value 
    265       ! ------------- 
    266227      DO jj = 2, jpjm1 
    267228         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    275236         END DO 
    276237      END DO 
    277  
     238      ! 
    278239      ! interior value (2=<jk=<jpkm1) 
    279       ! -------------- 
    280240      DO jk = 2, jpkm1 
    281241         DO jj = 2, jpjm1 
     
    296256         END DO 
    297257      END DO 
    298  
     258      ! 
    299259   END SUBROUTINE hpg_zco 
    300260 
     
    307267      !!  
    308268      !! ** Action  : - Update (ua,va) with the now hydrastatic pressure trend 
    309       !!     
    310       !! History : 
    311       !!   8.5  !  02-08  (A. Bozec)  Original code 
    312       !!   9.0  !  04-08  (G. Madec)  F90 
    313269      !!----------------------------------------------------------------------  
    314       !! * modules used                                  
    315       USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace 
    316          &              zhpj => sa      ! use sa as 3D workspace 
    317                 
    318       !! * Arguments 
    319       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    320  
    321       !! * local declarations 
    322       INTEGER ::   ji, jj, jk           ! dummy loop indices 
    323       INTEGER ::   iku, ikv             ! temporary integers 
    324       REAL(wp) ::   & 
    325          zcoef0, zcoef1,             &  ! temporary scalars 
    326          zcoef2, zcoef3                 !    "         " 
     270      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     271      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     272      !! 
     273      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     274      !! 
     275      INTEGER  ::   ji, jj, jk                       ! dummy loop indices 
     276      INTEGER  ::   iku, ikv                         ! temporary integers 
     277      REAL(wp) ::   zcoef0, zcoef1, zcoef2, zcoef3   ! temporary scalars 
    327278      !!---------------------------------------------------------------------- 
    328279 
     
    330281         IF(lwp) WRITE(numout,*) 
    331282         IF(lwp) WRITE(numout,*) 'dyn:hpg_zps : hydrostatic pressure gradient trend' 
    332          IF(lwp) WRITE(numout,*) '~~~~~~~~~~~   z-coordinate with partial steps' 
    333          IF(lwp) WRITE(numout,*) '              vector optimization' 
     283         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~   z-coordinate with partial steps - vector optimization' 
    334284      ENDIF 
    335285 
    336  
    337       ! 0. Local constant initialization 
    338       ! -------------------------------- 
     286      ! Local constant initialization 
    339287      zcoef0 = - grav * 0.5 
    340288 
    341       ! 1. Surface value 
    342       ! ---------------- 
     289      !  Surface value 
    343290      DO jj = 2, jpjm1 
    344291         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    353300      END DO 
    354301 
    355       ! 2. interior value (2=<jk=<jpkm1) 
    356       ! ----------------- 
     302      ! interior value (2=<jk=<jpkm1) 
    357303      DO jk = 2, jpkm1 
    358304         DO jj = 2, jpjm1 
     
    410356# endif 
    411357      END DO 
    412  
     358      ! 
    413359   END SUBROUTINE hpg_zps 
    414360 
     
    431377      !! 
    432378      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    433       !! 
    434       !! History : 
    435       !!   7.0  !  96-01  (G. Madec)  s-coordinates 
    436       !!        !  97-05  (G. Madec)  split dynber into dynkeg and dynhpg 
    437       !!   8.5  !  02-08  (G. Madec)  F90: Free form and module, vector opt. 
    438       !!   9.0  !  04-08  (C. Talandier) New trends organization 
    439       !!   9.0  !  05-10  (A. Beckmann) various s-coordinate options 
    440       !!---------------------------------------------------------------------- 
    441       !! * modules used 
    442       USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace 
    443          &              zhpj => sa      ! use sa as 3D workspace 
    444  
    445       !! * Arguments 
    446       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    447  
    448       !! * Local declarations 
    449       INTEGER ::   ji, jj, jk           ! dummy loop indices 
    450       REAL(wp) ::   & 
    451          zcoef0, zuap, zvap             ! temporary scalars 
     379      !!---------------------------------------------------------------------- 
     380      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     381      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     382      !! 
     383      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     384      !! 
     385      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
     386      REAL(wp) ::   zcoef0, zuap, zvap   ! temporary scalars 
    452387      !!---------------------------------------------------------------------- 
    453388 
     
    458393      ENDIF 
    459394 
    460  
    461       ! 0. Local constant initialization 
    462       ! -------------------------------- 
     395      ! Local constant initialization 
    463396      zcoef0 = - grav * 0.5 
    464397 
    465  
    466       ! 1. Surface value 
    467       ! ----------------                           
     398      ! Surface value 
    468399      DO jj = 2, jpjm1 
    469400         DO ji = fs_2, fs_jpim1   ! vector opt.    
     
    484415      END DO    
    485416             
    486                 
    487       ! 2. interior value (2=<jk=<jpkm1) 
    488       ! -----------------      
     417      ! interior value (2=<jk=<jpkm1) 
    489418      DO jk = 2, jpkm1                                   
    490419         DO jj = 2, jpjm1      
     
    508437         END DO 
    509438      END DO 
    510  
     439      ! 
    511440   END SUBROUTINE hpg_sco 
    512441 
     
    530459      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    531460      !!             - Save the trend (l_trddyn=T) 
    532       !! 
    533       !! History : 
    534       !!   9.0  !  05-10  (A. Beckmann)  Original code 
    535       !!---------------------------------------------------------------------- 
    536       !! * modules used 
    537       USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace 
    538          &              zhpj => sa      ! use sa as 3D workspace 
    539  
    540       !! * Arguments 
    541       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    542        
    543       !! * Local declarations 
    544       INTEGER ::   ji, jj, jk           ! dummy loop indices 
    545       REAL(wp) ::   & 
    546          zcoef0, zuap, zvap             ! temporary scalars 
     461      !!---------------------------------------------------------------------- 
     462      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     463      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     464      !! 
     465      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     466      !! 
     467      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
     468      REAL(wp) ::   zcoef0, zuap, zvap   ! temporary scalars 
    547469      !!---------------------------------------------------------------------- 
    548470 
     
    553475      ENDIF 
    554476 
    555  
    556       ! 0. Local constant initialization 
    557       ! -------------------------------- 
     477      ! Local constant initialization 
    558478      zcoef0 = - grav * 0.5 
    559  
    560479  
    561       ! 1. Surface value 
    562       ! ---------------- 
     480      ! Surface value 
    563481      DO jj = 2, jpjm1 
    564482         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    578496         END DO 
    579497      END DO 
    580  
    581       ! 2. interior value (2=<jk=<jpkm1) 
    582       ! ----------------- 
     498      ! 
     499      ! interior value (2=<jk=<jpkm1) 
    583500      DO jk = 2, jpkm1 
    584501         DO jj = 2, jpjm1 
     
    606523         END DO 
    607524      END DO 
    608  
     525      ! 
    609526   END SUBROUTINE hpg_hel 
    610527 
     
    619536      !! 
    620537      !! Reference : Song, Mon. Wea. Rev., 126, 3213-3230, 1998. 
    621       !! 
    622       !! History : 
    623       !!   9.0  !  05-05  (B.W. An)  Original code 
    624       !!        !  05-10  (G. Madec) style & small optimisation 
    625       !!---------------------------------------------------------------------- 
    626       !! * modules used 
    627       USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace 
    628          &              zhpj => sa      ! use sa as 3D workspace 
    629  
    630       !! * Arguments 
    631       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    632  
    633       !! * Local declarations 
    634       INTEGER ::   ji, jj, jk           ! dummy loop indices 
    635       REAL(wp) ::   & 
    636          zcoef0, zuap, zvap,         &  ! temporary scalars 
    637          zalph , zbeta                  !    "         " 
     538      !!---------------------------------------------------------------------- 
     539      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     540      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     541      !! 
     542      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     543      !! 
     544      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
     545      REAL(wp) ::   zcoef0, zuap, zvap   ! temporary scalars 
     546      REAL(wp) ::   zalph , zbeta        !    "         " 
    638547      !!---------------------------------------------------------------------- 
    639548 
     
    644553      ENDIF 
    645554 
    646  
    647555      ! Local constant initialization 
    648       ! ----------------------------- 
    649556      zcoef0 = - grav * 0.5 
    650557      zalph  = 0.5 - gamm        ! weighting coefficients (alpha=0.5-gamm) 
     
    652559 
    653560      ! Surface value (no ponderation) 
    654       ! ------------- 
    655561      DO jj = 2, jpjm1 
    656562         DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    672578 
    673579      ! Interior value (2=<jk=<jpkm1) (weighted with zalph & zbeta) 
    674       ! -------------- 
    675580      DO jk = 2, jpkm1 
    676581         DO jj = 2, jpjm1 
     
    700605         END DO 
    701606      END DO 
    702  
     607      ! 
    703608   END SUBROUTINE hpg_wdj 
    704609 
     
    710615      !! ** Method  :   Density Jacobian with Cubic polynomial scheme 
    711616      !!  
    712       !! Reference: Shchepetkin, A.F. & J.C. McWilliams, J. Geophys. Res., 
    713       !!            108(C3), 3090, 2003 
    714       !! History : 
    715       !!   9.0  !  05-05  (B.W. An)  Original code 
    716       !!---------------------------------------------------------------------- 
    717       !! * modules used 
    718       USE oce, ONLY :   zhpi => ta,  &  ! use ta as 3D workspace 
    719          &              zhpj => sa      ! use sa as 3D workspace 
    720  
    721       !! * Arguments 
    722       INTEGER, INTENT( in ) ::   kt     ! ocean time-step index 
    723        
    724       !! * Local declarations 
    725       INTEGER ::   ji, jj, jk           ! dummy loop indices 
    726       REAL(wp) ::   & 
    727          zcoef0, z1_10, cffu, cffx,  &  ! temporary scalars 
    728                  z1_12, cffv, cffy,  &  !    "         " 
    729          zep   , cffw                   !    "         " 
    730       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &  ! 3D workspace 
    731          drhox, dzx, drhou, dzu, rho_i,     & 
    732          drhoy, dzy, drhov, dzv, rho_j,     & 
    733          drhoz, dzz, drhow, dzw, rho_k 
     617      !! Reference: Shchepetkin and McWilliams, J. Geophys. Res., 108(C3), 3090, 2003 
     618      !!---------------------------------------------------------------------- 
     619      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     620      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     621      !! 
     622      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     623      !! 
     624      INTEGER  ::   ji, jj, jk          ! dummy loop indices 
     625      REAL(wp) ::   zcoef0, zep, cffw   ! temporary scalars 
     626      REAL(wp) ::   z1_10, cffu, cffx   !    "         " 
     627      REAL(wp) ::   z1_12, cffv, cffy   !    "         " 
     628      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   drhox, dzx, drhou, dzu, rho_i   ! 3D workspace 
     629      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   drhoy, dzy, drhov, dzv, rho_j   !  "      " 
     630      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   drhoz, dzz, drhow, dzw, rho_k   !  "      " 
    734631      !!---------------------------------------------------------------------- 
    735632 
     
    741638 
    742639 
    743       ! 0. Local constant initialization 
    744       ! -------------------------------- 
     640      ! Local constant initialization 
    745641      zcoef0 = - grav * 0.5 
    746642      z1_10  = 1.0 / 10.0 
     
    771667      zep = 1.e-15 
    772668 
    773       !!bug  gm  drhoz not defined at level 1 and used (jk-1 with jk=2) 
    774       !!bug  gm  idem for drhox, drhoy et ji=jpi and jj=jpj 
     669!!bug  gm  drhoz not defined at level 1 and used (jk-1 with jk=2) 
     670!!bug  gm  idem for drhox, drhoy et ji=jpi and jj=jpj 
    775671 
    776672      DO jk = 2, jpkm1 
     
    930826         END DO 
    931827      END DO 
    932  
     828      ! 
    933829   END SUBROUTINE hpg_djc 
    934830 
     
    941837      !! 
    942838      !! Reference: Thiem & Berntsen, Ocean Modelling, In press, 2005. 
    943       !! History : 
    944       !!   9.0  !  05-07 (B.W. An) 
    945       !!   9.0  !  05-10 (A. Beckmann) adapted to non-equidistant and masked grids 
    946       !!---------------------------------------------------------------------- 
    947       !! * modules used 
    948       USE oce, ONLY :   zhpi => ta,         &  ! use ta as 3D workspace 
    949          &              zhpj => sa             ! use sa as 3D workspace 
    950  
    951       !! * Arguments 
    952       INTEGER, INTENT( in ) ::   kt            ! ocean time-step index 
    953        
    954       !! * Local declarations 
    955       INTEGER ::   ji, jj, jk                  ! dummy loop indices 
    956       REAL(wp) ::   & 
    957          zforg, zcoef0, zuap, zmskd1, zmskd1m,                             & 
    958          zfrot        , zvap, zmskd2, zmskd2m 
    959       REAL(wp), DIMENSION(jpi,jpj) ::       &  ! 2D temporary workspace 
    960          zdistr, zsina, zcosa              
    961       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   &  ! 3D temporary workspace 
    962          zhpiorg, zhpirot, zhpitra, zhpine, &  
    963          zhpjorg, zhpjrot, zhpjtra, zhpjne 
     839      !!---------------------------------------------------------------------- 
     840      USE oce, ONLY :   zhpi => ta   ! use ta as 3D workspace 
     841      USE oce, ONLY :   zhpj => sa   ! use sa as 3D workspace 
     842      !! 
     843      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
     844      !! 
     845      INTEGER  ::   ji, jj, jk          ! dummy loop indices 
     846      REAL(wp) ::   zforg, zcoef0, zuap, zmskd1, zmskd1m   ! temporary scalar 
     847      REAL(wp) ::   zfrot        , zvap, zmskd2, zmskd2m   !    "         " 
     848      REAL(wp), DIMENSION(jpi,jpj)     ::   zdistr, zsina, zcosa                ! 2D workspace 
     849      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhpiorg, zhpirot, zhpitra, zhpine   ! 3D workspace 
     850      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhpjorg, zhpjrot, zhpjtra, zhpjne   !  "      " 
    964851      !!---------------------------------------------------------------------- 
    965852 
     
    11181005         END DO 
    11191006      END DO 
    1120  
     1007      ! 
    11211008   END SUBROUTINE hpg_rot 
    11221009 
Note: See TracChangeset for help on using the changeset viewer.