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 900 for trunk/NEMO/C1D_SRC/dyncor_c1d.F90 – NEMO

Ignore:
Timestamp:
2008-04-22T20:13:41+02:00 (16 years ago)
Author:
rblod
Message:

Update 1D configuration according to SBC and LIM3, see ticket #117

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/C1D_SRC/dyncor_c1d.F90

    r899 r900  
    1 MODULE dyncor1d 
     1MODULE dyncor_c1d 
    22   !!====================================================================== 
    3    !!                     ***  MODULE  ini1D  *** 
    4    !! Ocean state   :  1D initialization 
     3   !!                     ***  MODULE  dyncor_c1d  *** 
     4   !! Ocean Dynamics :   Coriolis term in 1D configuration 
    55   !!===================================================================== 
     6   !! History :  2.0  !  2004-09  (C. Ethe)  Original code 
     7   !!            3.0  !  2008-04  (G. Madec)  style only 
     8   !!---------------------------------------------------------------------- 
    69#if defined key_c1d 
    710   !!---------------------------------------------------------------------- 
    8    !!   'key_c1d'               1D Configuration 
     11   !!   'key_c1d'                                          1D Configuration 
    912   !!---------------------------------------------------------------------- 
     13   !!   cor_c1d      : Coriolis factor at T-point (1D configuration) 
     14   !!   dyn_cor_c1d  : vorticity trend due to Coriolis at T-point 
    1015   !!---------------------------------------------------------------------- 
    11    !!   fcorio_1d   : Coriolis factor at T-point 
    12    !!   dyn_cor_1d  : vorticity trend due to Coriolis 
    13    !!---------------------------------------------------------------------- 
    14    !! * Modules used 
    15    USE oce            ! ocean dynamics and tracers 
    16    USE dom_oce        ! ocean space and time domain 
    17    USE phycst         ! physical constants 
    18    USE in_out_manager ! I/O manager 
    19    USE prtctl         ! Print control 
     16   USE oce               ! ocean dynamics and tracers 
     17   USE dom_oce           ! ocean space and time domain 
     18   USE phycst            ! physical constants 
     19   USE in_out_manager    ! I/O manager 
     20   USE prtctl            ! Print control 
    2021 
    2122   IMPLICIT NONE 
    2223   PRIVATE 
    2324 
    24    !! * Routine accessibility 
    25    PUBLIC fcorio_1d   ! routine called by OPA.F90 
    26    PUBLIC dyn_cor_1d  ! routine called by step1d.F90 
     25   PUBLIC   cor_c1d      ! routine called by OPA.F90 
     26   PUBLIC   dyn_cor_c1d  ! routine called by step1d.F90 
    2727 
    2828   !! * Substitutions 
    2929#  include "vectopt_loop_substitute.h90" 
    3030   !!---------------------------------------------------------------------- 
    31    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     31   !! NEMO/C1D  3.0 , LOCEAN-IPSL (2009)  
    3232   !! $Header$  
    33    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     33   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    3434   !!---------------------------------------------------------------------- 
    3535 
    3636CONTAINS 
    3737 
    38    SUBROUTINE fcorio_1d 
     38   SUBROUTINE cor_c1d 
    3939      !!---------------------------------------------------------------------- 
    40       !!                   ***  ROUTINE fcorio_1d  *** 
     40      !!                   ***  ROUTINE cor_c1d  *** 
    4141      !!  
    4242      !! ** Purpose : Compute the Coriolis factor at T-point 
    43       !! 
    44       !! ** Method  : 
    45       !! 
    46       !! History : 
    47       !!   9.0  !  04-09  (C. Ethe) 1D configuration 
    4843      !!---------------------------------------------------------------------- 
    49       !! * Local declarations 
    50       !!---------------------------------------------------------------------- 
    51       REAL(wp) ::   & 
    52          zphi0, zbeta, zf0         !  temporary scalars 
    53   
    54  
     44      REAL(wp) ::   zphi0, zbeta, zf0         !  temporary scalars 
    5545      !!---------------------------------------------------------------------- 
    5646 
    57       ! ================= ! 
    58       !  Coriolis factor  ! 
    59       ! ================= ! 
    6047      IF(lwp) WRITE(numout,*) 
    61       IF(lwp) WRITE(numout,*) 'fcorio_1d : Coriolis factor at T-point' 
    62       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
     48      IF(lwp) WRITE(numout,*) 'cor_c1d : Coriolis factor at T-point' 
     49      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    6350 
    6451      SELECT CASE( jphgr_msh )   ! type of horizontal mesh 
    65  
     52      ! 
    6653      CASE ( 0, 1, 4 )               ! mesh on the sphere 
    67  
    6854         ff(:,:) = 2. * omega * SIN( rad * gphit(:,:) )  
    69  
     55         ! 
    7056      CASE ( 2 )                     ! f-plane at ppgphi0  
    71  
    7257         ff(:,:) = 2. * omega * SIN( rad * ppgphi0 ) 
    73  
    7458         IF(lwp) WRITE(numout,*) '          f-plane: Coriolis parameter = constant = ', ff(1,1) 
    75  
     59         ! 
    7660      CASE ( 3 )                     ! beta-plane 
    77  
    7861         zbeta   = 2. * omega * COS( rad * ppgphi0 ) / ra                     ! beta at latitude ppgphi0 
    7962         zphi0   = ppgphi0 - FLOAT( jpjglo/2) * ppe2_m *1.e-3  / ( ra * rad ) ! latitude of the first row F-points 
    8063         zf0     = 2. * omega * SIN( rad * zphi0 )                            ! compute f0 1st point south 
    81  
    8264         ff(:,:) = ( zf0  + zbeta * gphit(:,:) * 1.e+3 )                      ! f = f0 +beta* y ( y=0 at south) 
    83  
    8465         IF(lwp) WRITE(numout,*) '          Beta-plane: Beta parameter = constant = ', ff(1,1) 
    8566         IF(lwp) WRITE(numout,*) '                      Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 
    86  
     67         ! 
    8768      CASE ( 5 )                     ! beta-plane and rotated domain 
    88  
    8969         zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra                     ! beta at latitude ppgphi0 
    9070         zphi0 = 15.e0                                                      ! latitude of the first row F-points 
    9171         zf0   = 2. * omega * SIN( rad * zphi0 )                            ! compute f0 1st point south 
    92  
    9372         ff(:,:) = ( zf0 + zbeta * ABS( gphit(:,:) - zphi0 ) * rad * ra )   ! f = f0 +beta* y ( y=0 at south) 
    94  
    9573         IF(lwp) WRITE(numout,*) '          Beta-plane: Beta parameter = constant = ', ff(1,1) 
    9674         IF(lwp) WRITE(numout,*) '                      Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 
    97  
     75         ! 
    9876      END SELECT 
    99  
    100    END SUBROUTINE fcorio_1d 
     77      ! 
     78   END SUBROUTINE cor_c1d 
    10179 
    10280 
    103    SUBROUTINE dyn_cor_1d( kt ) 
     81   SUBROUTINE dyn_cor_c1d( kt ) 
    10482      !!---------------------------------------------------------------------- 
    105       !!                   ***  ROUTINE dyn_cor_1d  *** 
     83      !!                   ***  ROUTINE dyn_cor_c1d  *** 
    10684      !!  
    10785      !! ** Purpose :   Compute the now total vorticity trend and add it to  
     
    11391      !!   9.0  !  04-09  (C. Ethe) 1D configuration 
    11492      !!---------------------------------------------------------------------- 
    115       !! * Arguments 
    116       INTEGER, INTENT( in ) ::   kt        ! ocean time-step index 
    117  
    118       !! * Local declarations 
    119       INTEGER ::   ji, jj, jk              ! dummy loop indices 
    120       REAL(wp) ::   & 
    121          zua, zva                          ! temporary scalars 
    122  
     93      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     94      !! 
     95      INTEGER ::   ji, jj, jk         ! dummy loop indices 
    12396      !!---------------------------------------------------------------------- 
    124  
     97      ! 
    12598      IF( kt == nit000 ) THEN 
    12699         IF(lwp) WRITE(numout,*) 
    127          IF(lwp) WRITE(numout,*) 'dyn_cor_1d : total vorticity trend in 1D' 
     100         IF(lwp) WRITE(numout,*) 'dyn_cor_c1d : total vorticity trend in 1D' 
    128101         IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    129102      ENDIF 
    130  
     103      ! 
    131104      DO jk = 1, jpkm1 
    132105         DO jj = 2, jpjm1 
    133106            DO ji = fs_2, fs_jpim1   ! vector opt. 
    134                zua =    ff(ji,jj) * vn(ji,jj,jk) 
    135                zva =  - ff(ji,jj) * un(ji,jj,jk) 
    136                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    137                va(ji,jj,jk) = va(ji,jj,jk) + zva 
     107               ua(ji,jj,jk) = ua(ji,jj,jk) + ff(ji,jj) * vn(ji,jj,jk) 
     108               va(ji,jj,jk) = va(ji,jj,jk) - ff(ji,jj) * un(ji,jj,jk) 
    138109            END DO 
    139110         END DO 
    140111      END DO    
    141  
    142       IF(ln_ctl)   THEN 
    143          CALL prt_ctl(tab3d_1=ua, clinfo1=' cor  - Ua: ', mask1=umask, & 
    144             &         tab3d_2=va, clinfo2=' Va: ', mask2=vmask) 
    145       ENDIF 
    146  
    147 !     IF(l_ctl) THEN         ! print sum trends (used for debugging) 
    148 !        zua = SUM( ua(2:nictl,2:njctl,1:jpkm1) * umask(2:nictl,2:njctl,1:jpkm1) ) 
    149 !        zva = SUM( va(2:nictl,2:njctl,1:jpkm1) * vmask(2:nictl,2:njctl,1:jpkm1) ) 
    150 !        WRITE(numout,*) ' cor  - Ua: ', zua-u_ctl, ' Va: ', zva-v_ctl 
    151 !        u_ctl = zua   ;   v_ctl = zva 
    152 !     ENDIF 
    153  
    154    END SUBROUTINE dyn_cor_1d 
     112      ! 
     113      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ua, clinfo1=' cor  - Ua: ', mask1=umask,  & 
     114         &                       tab3d_2=va, clinfo2=' Va: '       , mask2=vmask ) 
     115      ! 
     116   END SUBROUTINE dyn_cor_c1d 
    155117 
    156118#else 
    157119   !!---------------------------------------------------------------------- 
    158    !!   Default key                                     NO 1D Config 
     120   !!   Default key                                     NO 1D Configuration 
    159121   !!---------------------------------------------------------------------- 
    160122CONTAINS 
    161    SUBROUTINE fcorio_1d      ! Empty routine 
    162    END SUBROUTINE fcorio_1d    
    163    SUBROUTINE dyn_cor_1d ( kt ) 
    164       WRITE(*,*) 'dyn_cor_1d: You should not have seen this print! error?', kt 
    165    END SUBROUTINE dyn_cor_1d 
     123   SUBROUTINE cor_c1d              ! Empty routine 
     124   END SUBROUTINE cor_c1d    
     125   SUBROUTINE dyn_cor_c1d ( kt )      ! Empty routine 
     126      WRITE(*,*) 'dyn_cor_c1d: You should not have seen this print! error?', kt 
     127   END SUBROUTINE dyn_cor_c1d 
    166128#endif 
    167129 
    168130   !!===================================================================== 
    169 END MODULE dyncor1d 
     131END MODULE dyncor_c1d 
Note: See TracChangeset for help on using the changeset viewer.