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 18 for trunk/NEMO – NEMO

Changeset 18 for trunk/NEMO


Ignore:
Timestamp:
2004-02-17T09:36:18+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE001 : First major NEMO update

Location:
trunk/NEMO/OPA_SRC/SBC
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/blk_oce.F90

    r3 r18  
    1717 
    1818   IMPLICIT NONE 
    19    LOGICAL, PUBLIC ::   l_bulk = .TRUE.    
     19 
     20   LOGICAL, PUBLIC ::   l_bulk = .TRUE.   !:  
    2021    
    2122   !!---------------------------------------------------------------------- 
     
    2324   !!---------------------------------------------------------------------- 
    2425 
    25    REAL(wp), DIMENSION(jpi,jpj) ::   &  
    26       watm     ,      &   ! precipitation 
    27       tatm     ,      &   ! atmospheric temperature 
    28       hatm     ,      &   ! relative humidity 
    29       vatm     ,      &   ! wind speed 
    30       catm                ! percent of cloud cover 
     26   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     27      watm     ,      &  !: precipitation 
     28      tatm     ,      &  !: atmospheric temperature 
     29      hatm     ,      &  !: relative humidity 
     30      vatm     ,      &  !: wind speed 
     31      catm               !: percent of cloud cover 
    3132 
    32    REAL(wp), DIMENSION(jpi,jpj)    ::   & 
    33       gsst     ,      &  ! SST mean on nfbulk ocean time step 
    34       gsss               ! SSS mean on nfbulk ocean time step 
     33   REAL(wp), PUBLIC, DIMENSION(jpi,jpj)    ::   &  !: 
     34      gsst     ,      &  !: SST mean on nfbulk ocean time step 
     35      gsss               !: SSS mean on nfbulk ocean time step 
    3536 
    3637   REAL(wp) ::        & 
    37       yearday  ,      &  ! number of days per year 
    38       rdtbs2             ! bulk time step divide by 2 
     38      yearday  ,      &  !: number of days per year 
     39      rdtbs2             !: bulk time step divide by 2 
    3940#else 
    4041   !!---------------------------------------------------------------------- 
    4142   !!   Default option                                         Empty module 
    4243   !!---------------------------------------------------------------------- 
    43    LOGICAL, PUBLIC ::   l_bulk = .FALSE.   
     44   LOGICAL, PUBLIC ::   l_bulk = .FALSE.  !: 
    4445#endif 
    4546    
    46    INTEGER ::         & !!! namdom : space/time domain (namlist) 
    47       nfbulk =  5         ! bulk computation frequency  
     47   INTEGER ::         & !!: namdom : space/time domain (namlist) 
     48      nfbulk =  5        !: bulk computation frequency  
    4849   !!---------------------------------------------------------------------- 
    4950END MODULE blk_oce 
  • trunk/NEMO/OPA_SRC/SBC/flx_bulk_daily.h90

    r3 r18  
    5959      USE blk_oce         ! bulk variable 
    6060      USE bulk            ! bulk module 
     61 
    6162      !! * arguments 
    6263      INTEGER, INTENT( in  ) ::   kt ! ocean time step 
     
    6465      !! * Local declarations       
    6566      INTEGER , PARAMETER :: jpday  = 365, jpmois = 12 
    66       INTEGER                    :: ji,jj 
    67       INTEGER                    :: i15,iday, idy 
    68       INTEGER , DIMENSION(jpday) :: istep_n 
    69       INTEGER , DIMENSION(jpmois):: istep_c, istep_x 
    70       INTEGER                    :: itime 
    71       REAL(wp) ::  zdate0 
    72       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    73          zsst,       &  ! ??? 
    74          zlon    ,   &  ! ??? 
    75          zlat           ! ??? 
    76  
    77       REAL(wp), DIMENSION(jpk) ::   & 
    78          zlev           ! ??? 
    79       REAL(wp) ::   zxy 
    80       INTEGER  :: ipi,ipj,ipk 
    81       INTEGER  :: iman,imois,imois2 
     67      INTEGER  ::   i15,iday, idy 
     68      INTEGER  ::   ipi,ipj,ipk 
     69      INTEGER  ::   iman,imois,imois2 
     70      INTEGER, DIMENSION(jpday) :: istep_n 
     71      INTEGER, DIMENSION(jpmois):: istep_c, istep_x 
     72      INTEGER  ::   itime 
     73      REAL(wp) ::   zdate0, zxy 
     74      REAL(wp), DIMENSION(jpi,jpj) ::   zlon, zlat   ! ??? 
     75      REAL(wp), DIMENSION(jpk) ::   zlev           ! ??? 
    8276      CHARACTER(len=45)  ::  & 
    8377         clname_n = 'NCEP_1d_0101_0112_tair.nc',   & 
  • trunk/NEMO/OPA_SRC/SBC/flx_forced_daily.h90

    r3 r18  
    7070 
    7171 
    72 #if defined key_mpp 
    73       == >> forced compile error: 
    74       flx_forced_daily : Reading Netcdf file in mpp Not yet implemented 
    75 #endif 
     72      IF( lk_mpp ) THEN 
     73         IF(lwp) WRITE(numout,cform_err) 
     74         IF(lwp) WRITE(numout,*) 'flx_forced_daily:  netcdf & mpp not yet possible' 
     75         nstop = nstop + 1 
     76      ENDIF 
    7677 
    7778      ! Initialization 
  • trunk/NEMO/OPA_SRC/SBC/flx_oce.F90

    r3 r18  
    1313 
    1414   IMPLICIT NONE 
     15   PRIVATE 
     16    
    1517 
    1618   !!---------------------------------------------------------------------- 
     
    2123   !! 'key_flx_forced_daily' 
    2224   !!---------------------------------------------------------------------- 
    23    REAL(wp), DIMENSION(jpi,jpj,3) ::   & 
    24       p_qt ,        &   ! total heat flux ( solar + non solar) 
    25       p_qsr,        &   ! solar heat flux 
    26       p_emp             ! evaporation minus precipitation             
     25   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,3) ::   &  !: 
     26      p_qt ,        &   !: total heat flux ( solar + non solar) 
     27      p_qsr,        &   !: solar heat flux 
     28      p_emp             !: evaporation minus precipitation             
    2729 
    2830#elif defined key_ice_lim || defined key_flx_bulk_monthly || defined key_flx_bulk_daily 
    29    REAL(wp), DIMENSION(jpi,jpj)    ::   & 
    30       qsr_ice  ,      &  ! solar flux over ice 
    31       qsr_oce  ,      &  ! solar flux over ocean 
    32       qnsr_oce ,      &  ! total non solar heat flux (Longwave downward radiation) over ocean  
    33       qnsr_ice ,      &  ! total non solar heat flux (Longwave downward radiation) over ice 
    34       tprecip  ,      &  ! total precipitation ( or liquid precip minus evaporation in coupled mode) 
    35       sprecip  ,      &  ! solid (snow) precipitation 
    36       dqns_ice ,      &  ! total non solar sensibility over ice (LW+SEN+LA) 
    37       tn_ice   ,      &  ! ice surface temperature 
     31   REAL(wp), PUBLIC, DIMENSION(jpi,jpj)    ::   &  !: 
     32      qsr_ice  ,      &  !: solar flux over ice 
     33      qsr_oce  ,      &  !: solar flux over ocean 
     34      qnsr_oce ,      &  !: total non solar heat flux (Longwave downward radiation) over ocean  
     35      qnsr_ice ,      &  !: total non solar heat flux (Longwave downward radiation) over ice 
     36      tprecip  ,      &  !: total precipitation ( or liquid precip minus evaporation in coupled mode) 
     37      sprecip  ,      &  !: solid (snow) precipitation 
     38      dqns_ice ,      &  !: total non solar sensibility over ice (LW+SEN+LA) 
     39      tn_ice   ,      &  !: ice surface temperature 
    3840#if ! defined key_coupled 
    39       fr1_i0   ,      &  ! 1st part of the fraction of sol. rad.  which penetrate inside the ice cover 
    40       fr2_i0   ,      &  ! 2nd part of the fraction of sol. rad.  which penetrate inside the ice cover  
    41       qla_ice  ,      &  ! latent flux over ice   
    42       dqla_ice ,      &  ! latent sensibility over ice 
    43       evap               ! evaporation over ocean 
     41      fr1_i0   ,      &  !: 1st part of the fraction of sol. rad.  which penetrate inside the ice cover 
     42      fr2_i0   ,      &  !: 2nd part of the fraction of sol. rad.  which penetrate inside the ice cover  
     43      qla_ice  ,      &  !: latent flux over ice   
     44      dqla_ice ,      &  !: latent sensibility over ice 
     45      evap               !: evaporation over ocean 
    4446#else 
    45       rrunoff  ,      &  ! runoff 
    46       calving  ,         ! calving 
    47       alb_ice            ! albedo of ice       
     47      rrunoff  ,      &  !: runoff 
     48      calving  ,      &  !: calving 
     49      alb_ice            !: albedo of ice       
    4850#endif 
    4951 
  • trunk/NEMO/OPA_SRC/SBC/flxblk.F90

    r3 r18  
    1616   USE oce             ! ocean dynamics and tracers 
    1717   USE dom_oce         ! ocean space and time domain 
     18   USE cpl_oce         ! ??? 
    1819   USE phycst          ! physical constants 
    1920   USE daymod 
     
    555556            zpsil          = zpsih 
    556557             
    557             zvatmg         = MAX( 0.032 * 1.5e-3 * vatm(ji,jj) * vatm(ji,jj) / g, zeps ) 
     558            zvatmg         = MAX( 0.032 * 1.5e-3 * vatm(ji,jj) * vatm(ji,jj) / grav, zeps ) 
    558559!i 
    559560!!          if( zvatmg == 0.e0 ) then 
  • trunk/NEMO/OPA_SRC/SBC/flxfwb.F90

    r3 r18  
    66#if defined key_dynspg_fsc 
    77   !!---------------------------------------------------------------------- 
     8   !!   'key_dynspg_fsc'               No free surface with constant volume 
     9   !!---------------------------------------------------------------------- 
    810   !!   flx_fwb      : freshwater budget for global ocean configurations 
    911   !!                  in free surface and forced mode 
     
    1315   USE oce             ! ocean dynamics and tracers 
    1416   USE dom_oce         ! ocean space and time domain 
     17   USE cpl_oce         ! coupled atmosphere/ocean 
    1518   USE phycst          ! physical constants 
    1619   USE in_out_manager  ! I/O manager 
     
    3033 
    3134   !! * Share module variables 
    32    LOGICAL, PUBLIC ::    &  !!! * namelist * 
    33       ln_fwb = .TRUE.        ! Flag to activate the fwb computation 
    34    REAL(wp), PUBLIC ::   & 
    35       a_fwb_b  ,  &  ! annual domain averaged freshwater budget 
    36       a_fwb          ! for 2 year before (_b) and before year. 
     35   LOGICAL, PUBLIC ::    & !!: * namelist * 
     36      ln_fwb = .TRUE.       !: Flag to activate the fwb computation 
     37   REAL(wp), PUBLIC ::   &  !: 
     38      a_fwb_b  ,         &  !: annual domain averaged freshwater budget 
     39      a_fwb                 !: for 2 year before (_b) and before year. 
    3740 
    3841   !! * Module variables 
     
    103106         e1e2_i(:,:) = e1t(:,:) * e2t(:,:) * tmask_i(:,:) 
    104107         a_sshb = SUM( e1e2_i(:,:) * sshn(:,:) ) 
     108         IF( lk_mpp )   CALL  mpp_sum( a_sshb   )   ! sum over all the global domain 
    105109         DO jk = 1, jpkm1 
    106110            DO jj = 2, jpjm1 
     
    111115            END DO 
    112116         END DO 
    113 #if defined key_mpp 
    114       ! Mpp: sum over all the global domain 
    115       CALL  mpp_sum( a_sshb   )         
    116       CALL  mpp_sum( a_sal000 )         
    117 #endif 
     117         IF( lk_mpp )   CALL  mpp_sum( a_sal000 )   ! sum over the global domain 
    118118 
    119119      ENDIF 
     
    122122      ! --------------------------------------====---------- 
    123123      a_emp    = SUM( e1e2_i(:,:) * emp   (:,:) ) 
     124      IF( lk_mpp )   CALL  mpp_sum( a_emp    )   ! sum over the global domain 
    124125#if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 
    125126      a_precip = SUM( e1e2_i(:,:) * watm  (:,:) ) 
     127      IF( lk_mpp )   CALL  mpp_sum( a_precip )   ! sum over the global domain 
    126128#endif 
    127129      a_rnf    = SUM( e1e2_i(:,:) * runoff(:,:) ) 
     130      IF( lk_mpp )   CALL  mpp_sum( a_rnf    )   ! sum over the global domain 
    128131 
    129132      IF( aminus /= 0.0 ) a_aminus = a_aminus + ( MIN( aplus, aminus ) / aminus ) 
    130133      IF( aplus  /= 0.0 ) a_aplus  = a_aplus  + ( MIN( aplus, aminus ) / aplus  ) 
    131134 
    132 #if defined key_mpp 
    133       ! Mpp: sum over all the global domain 
    134       CALL  mpp_sum( a_emp    )    
    135 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 
    136       CALL  mpp_sum( a_precip )    
    137 #endif 
    138       CALL  mpp_sum( a_rnf    )    
    139 #endif 
    140  
    141135 
    142136      ! Update empold if new year start 
    143       ikty = 365 * 86400 /rdttra(1) 
     137      ikty = 365 * 86400 / rdttra(1)    !!bug  use of 365 days leap year or 360d year !!!!!!! 
    144138      IF( MOD( kt, ikty ) == 0 ) THEN 
    145             zarea    = SUM( e1e2_i(:,:)             ) 
    146             a_fwb_b = a_fwb 
    147             a_fwb   = SUM( e1e2_i(:,:) * sshn(:,:) ) 
    148 #if defined key_mpp 
    149       ! Mpp: sum over all the global domain 
    150       CALL  mpp_sum( zarea    )         
    151       CALL  mpp_sum( a_fwb    )         
    152 #endif 
    153             a_fwb   = a_fwb * 1.e+3 / ( zarea * 86400. * 365. )    ! convert in Kg/m3/s = mm/s 
    154  
    155             empold = 2. * a_fwb - a_fwb_b   ! current year freshwater budget correction 
    156             !                               ! estimate from the 2 previous years budget 
    157  
     139         zarea    = SUM( e1e2_i(:,:)            ) 
     140         IF( lk_mpp )   CALL  mpp_sum( zarea    )   ! sum over the global domain 
     141         a_fwb_b = a_fwb 
     142         a_fwb   = SUM( e1e2_i(:,:) * sshn(:,:) ) 
     143         IF( lk_mpp )   CALL  mpp_sum( a_fwb    )   ! sum over the global domain 
     144 
     145         a_fwb   = a_fwb * 1.e+3 / ( zarea * 86400. * 365. )    ! convert in Kg/m3/s = mm/s 
     146         !                                                      !!bug 365d year  
     147         empold = 2. * a_fwb - a_fwb_b   ! current year freshwater budget correction 
     148         !                               ! estimate from the 2 previous years budget 
    158149      ENDIF 
    159150 
     
    176167            END DO 
    177168         END DO 
    178 #if defined key_mpp 
    179       ! Mpp: sum over all the global domain 
    180       CALL  mpp_sum( zarea    )         
    181       CALL  mpp_sum( a_sshend )         
    182       CALL  mpp_sum( a_salend )         
    183 #endif 
     169         IF( lk_mpp ) THEN 
     170            CALL  mpp_sum( zarea    )   ! sums over all the global domain 
     171            CALL  mpp_sum( a_sshend )         
     172            CALL  mpp_sum( a_salend )         
     173         ENDIF 
    184174 
    185175         a_aminus = a_aminus / ( nitend - nit000 + 1 ) 
     
    281271      IF(lwp) WRITE '               Rigid-lid option, fwb correction is useless, but valid' 
    282272#endif 
    283 #if defined key_coupled 
    284       IF(lwp) WRITE '               Coupled option, fwb correction is a flux correction ! ' 
    285       IF(lwp) WRITE '               ln_fwb = .FALSE. is recommanded' 
    286 #endif 
    287  
    288       !                                       ! ============================== 
     273      IF( lk_cpl ) THEN 
     274         IF(lwp) WRITE(numout,*) '               Coupled option, fwb correction is a flux correction ! ' 
     275         IF(lwp) WRITE(numout,*) '               ln_fwb = .FALSE. is recommanded' 
     276      ENDIF 
     277 
     278      !                                        ! ============================== 
    289279      IF( ln_fwb ) THEN                        !  Freshwater budget correction  
    290          !                                    ! ============================== 
     280         !                                     ! ============================== 
    291281         ! Read the corrective factor on precipitations (empold) 
    292282         INQUIRE( FILE=clname, EXIST=llbon ) 
     
    317307 
    318308#else 
     309   !!---------------------------------------------------------------------- 
     310   !!   Default case :                        
     311   !!---------------------------------------------------------------------- 
     312   LOGICAL, PUBLIC ::   ln_fwb = .FALSE.   !: no fwb forced 
    319313CONTAINS 
    320    SUBROUTINE flx_fwb 
     314   SUBROUTINE flx_fwb( kt )                ! dummy routine 
     315      WRITE(*,*) 'flx_fwb: You should not have seen this print! error?', kt 
    321316   END SUBROUTINE flx_fwb 
    322317   SUBROUTINE flx_fwb_init 
  • trunk/NEMO/OPA_SRC/SBC/flxrnf.F90

    r3 r18  
    2727   PRIVATE 
    2828 
     29   !! * Routine accessibility 
     30   PUBLIC flx_rnf          ! routine call by step.F90 
     31 
    2932   !! * Shared module variables 
    30    PUBLIC flx_rnf         ! routine call by step.F90 
    31    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   & 
    32       runoff,          &  ! monthly runoff (kg/m2/s) 
    33       upsadv,          &  ! mixed adv scheme in straits vicinity (hori.) 
    34       upsrnfh             ! mixed adv scheme in runoffs vicinity (hori.) 
    35    REAL(wp), PUBLIC, DIMENSION(jpk) ::   & 
    36       upsrnfz             ! mixed adv scheme in runoffs vicinity (vert.) 
    37    INTEGER, PUBLIC ::   & 
    38       numrof  = 48 ,    &  ! logical unit for runoff data 
    39       nrunoff =  0 ,    &  ! runoff option (namelist) 
    40       nrnf1, nrnf2         ! first and second record used 
     33   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     34      runoff,           &  !: monthly runoff (kg/m2/s) 
     35      upsadv,           &  !: mixed adv scheme in straits vicinity (hori.) 
     36      upsrnfh              !: mixed adv scheme in runoffs vicinity (hori.) 
     37   REAL(wp), PUBLIC, DIMENSION(jpk) ::   &  !: 
     38      upsrnfz              !: mixed adv scheme in runoffs vicinity (vert.) 
     39   INTEGER, PUBLIC ::   &  !: 
     40      numrof  = 48 ,    &  !: logical unit for runoff data 
     41      nrunoff =  0 ,    &  !: runoff option (namelist) 
     42      nrnf1, nrnf2         !: first and second record used 
    4143 
    4244   !! * Module variable 
    43    REAL(wp), DIMENSION(jpi,jpj,2) ::   & 
    44       rnfdta              ! monthly runoff data array (kg/m2/s) 
     45   REAL(wp), DIMENSION(jpi,jpj,2) ::   &  !: 
     46      rnfdta               !: monthly runoff data array (kg/m2/s) 
    4547   !!---------------------------------------------------------------------- 
    4648   !!   OPA 9.0 , LODYC-IPSL  (2003) 
     
    104106      INTEGER  ::   ji, jj                 ! dummy loop indices 
    105107      INTEGER  ::   ipi, ipj, ipk          ! temporary integers 
     108      INTEGER  ::   ii0, ii1, ij0, ij1     !    "          " 
    106109      INTEGER, DIMENSION(jpmois) ::     & 
    107110         istep                             ! temporary workspace 
     
    298301          
    299302         IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN 
    300             ! ORCA_R2 configuration : 
    301             ! upstream scheme in the Sound Strait 
    302             upsrnfh( mi0(144):mi1(144) , mj0(116):mj1(116) ) = 0.25 
    303             upsrnfh( mi0(145):mi1(147) , mj0(116):mj1(116) ) = 0.50 
    304             upsrnfh( mi0(148):mi1(148) , mj0(116):mj1(116) ) = 0.25 
     303            ! ORCA_R2 configuration : upstream scheme in the Sound Strait 
     304            ij0 = 116   ;   ij1 = 116 
     305            ii0 = 144   ;   ii1 = 144   ;   upsrnfh( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     306            ii0 = 145   ;   ii1 = 147   ;   upsrnfh( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     307            ii0 = 148   ;   ii1 = 148   ;   upsrnfh( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
    305308         ENDIF 
    306309 
     
    318321               !                                     ! ======================= 
    319322 
    320                !                                                       ! Gibraltar Strait 
    321                upsadv( mi0(70):mi1(71) , mj0(52):mj1(53) ) = 0.50 
     323               !                                          ! Gibraltar Strait 
     324               ii0 =  70   ;   ii1 =  71 
     325               ij0 =  52   ;   ij1 =  53   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
    322326          
    323327               !                                     ! ======================= 
     
    326330 
    327331               !                                          ! Gibraltar Strait 
    328                upsadv( mi0(138):mi1(138) , mj0(102):mj1(102) ) = 0.20 
    329                upsadv( mi0(139):mi1(139) , mj0(102):mj1(102) ) = 0.40 
    330                upsadv( mi0(140):mi1(140) , mj0(102):mj1(102) ) = 0.50 
    331                upsadv( mi0(141):mi1(141) , mj0(101):mj1(102) ) = 0.50 
     332               ij0 = 102   ;   ij1 = 102 
     333               ii0 = 138   ;   ii1 = 138   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20 
     334               ii0 = 139   ;   ii1 = 139   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40 
     335               ii0 = 140   ;   ii1 = 140   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     336               ij0 = 101   ;   ij1 = 102 
     337               ii0 = 141   ;   ii1 = 141   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
    332338 
    333339               !                                          ! Bab el Mandeb Strait 
    334                upsadv( mi0(164):mi1(164) , mj0( 87):mj1( 88) ) = 0.10 
    335                upsadv( mi0(163):mi1(163) , mj0( 88):mj1( 88) ) = 0.25 
    336                upsadv( mi0(162):mi1(162) , mj0( 88):mj1( 88) ) = 0.40 
    337                upsadv( mi0(160):mi1(161) , mj0( 88):mj1( 88) ) = 0.50 
    338                upsadv( mi0(158):mi1(160) , mj0( 89):mj1( 89) ) = 0.25 
    339                upsadv( mi0(160):mi1(160) , mj0( 90):mj1( 90) ) = 0.25 
     340               ij0 =  87   ;   ij1 =  88 
     341               ii0 = 164   ;   ii1 = 164   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10 
     342               ij0 =  88   ;   ij1 =  88 
     343               ii0 = 163   ;   ii1 = 163   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     344               ii0 = 162   ;   ii1 = 162   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40 
     345               ii0 = 160   ;   ii1 = 161   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
     346               ij0 =  89   ;   ij1 =  89 
     347               ii0 = 158   ;   ii1 = 160   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
     348               ij0 =  90   ;   ij1 =  90 
     349               ii0 = 160   ;   ii1 = 160   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25 
    340350 
    341351               !                                          ! Sound Strait 
    342                upsadv( mi0(145):mi1(147) , mj0(116):mj1(116) ) = 0.50 
     352               ij0 = 116   ;   ij1 = 116 
     353               ii0 = 145   ;   ii1 = 147   ;   upsadv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50 
    343354          
    344355            END SELECT  
  • trunk/NEMO/OPA_SRC/SBC/flxrnf_ORCA_R05.h90

    r3 r18  
    1313   PRIVATE 
    1414 
     15   !! * Routine accessibility 
     16   PUBLIC flx_rnf         ! routine call by step.F90 
     17 
    1518   !! * Shared module variables 
    16    PUBLIC flx_rnf         ! routine call by step.F90 
    17    REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   & 
    18       runoff,          &  ! monthly runoff (kg/m2/s) 
    19       upsadv,          &  ! mixed adv scheme in straits vicinity (hori.) 
    20       upsrnfh             ! mixed adv scheme in runoffs vicinity (hori.) 
    21    REAL(wp), PUBLIC, DIMENSION(jpk) ::   & 
    22       upsrnfz             ! mixed adv scheme in runoffs vicinity (vert.) 
    23    INTEGER, PUBLIC ::   & 
    24       numrof  = 48 ,    &  ! logical unit for runoff data 
    25       nrunoff =  0 ,    &  ! runoff option (namelist) 
    26       nrnf1, nrnf2         ! first and second record used 
     19   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   &  !: 
     20      runoff,            &  !: monthly runoff (kg/m2/s) 
     21      upsadv,            &  !: mixed adv scheme in straits vicinity (hori.) 
     22      upsrnfh               !: mixed adv scheme in runoffs vicinity (hori.) 
     23   REAL(wp), PUBLIC, DIMENSION(jpk) ::   &  !: 
     24      upsrnfz               !: mixed adv scheme in runoffs vicinity (vert.) 
     25   INTEGER , PUBLIC ::   &  !: 
     26      numrof  = 48 ,     &  !: logical unit for runoff data 
     27      nrunoff =  0 ,     &  !: runoff option (namelist) 
     28      nrnf1, nrnf2          !: first and second record used 
    2729 
    2830   !! * Module variable 
    29    REAL(wp), DIMENSION(jpi,jpj,2) ::   & 
    30       rnfdta              ! monthly runoff data array (kg/m2/s) 
     31   REAL(wp), DIMENSION(jpi,jpj,2) ::   &  !: 
     32      rnfdta                !: monthly runoff data array (kg/m2/s) 
    3133   !!---------------------------------------------------------------------- 
    3234   !!   OPA 9.0 , LODYC-IPSL  (2003) 
     
    8890      !!---------------------------------------------------------------------- 
    8991      !! * Local declarations 
    90       INTEGER  :: jpmois 
    91       INTEGER  ::   & 
    92          jpriv,    & ! jpriv : maximum river number 
    93          jpcoef      ! jpcoef: maximum point number 
    94       INTEGER, PARAMETER ::   jpmois=12, jpriv=120, jpcoef=20 
     92      INTEGER, PARAMETER ::   & 
     93         jpmois=12,   &  ! number of month in the year ! 
     94         jpriv=120,   &  ! maximum number of rivers 
     95         jpcoef=20       ! maximum number of gridpoints for mouth rivers 
    9596 
    9697      INTEGER  ::   ji, jj, jl, jm, jn, jr, jc 
    9798      INTEGER  ::   i15, imois, iman 
    9899      INTEGER  ::   inbp, idbd, idmeom 
    99       INTEGER  ::   iipt0, iipt1, ijpt0, ijpt1, ii, ij 
    100100      INTEGER  ::   iirnf(jpcoef,jpriv),ijrnf(jpcoef,jpriv) 
    101101      INTEGER  ::   inb(jpriv) 
     
    10401040                     END DO 
    10411041                     ! ji-1,jj-2 
    1042                      ijpt0 = MAX( 1, MIN( ij-2,jpj  ) ) 
    1043                      ijpt1 = MAX( 0, MIN( ij-2,jpj-1) ) 
    1044                      DO jj = ijpt0, ijpt1 
    1045                         DO ji = iipt0, iipt1 
     1042                     DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 
     1043                        DO ji = mi0(iirnf(jl,jr) - 1), mi1(iirnf(jl,jr) - 1) 
    10461044                           DO jn = 1, 3  
    10471045                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    10501048                     END DO 
    10511049                     ! ji,jj-2 
    1052                      iipt0 = MAX( 1, MIN( ii,jpi  ) ) 
    1053                      iipt1 = MAX( 0, MIN( ii,jpi-1) ) 
    1054                      DO jj = ijpt0, ijpt1 
    1055                         DO ji = iipt0, iipt1 
     1050                     DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 
     1051                        DO ji = mi0(iirnf(jl,jr)    ), mi1(iirnf(jl,jr)    ) 
    10561052                           DO jn = 1, 3  
    10571053                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    10601056                     END DO 
    10611057                     ! ji,jj+2 
    1062                      ijpt0 = MAX( 1, MIN( ij+2,jpj  ) ) 
    1063                      ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 
    1064                      DO jj = ijpt0, ijpt1 
    1065                         DO ji = iipt0, iipt1 
     1058                     DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 
     1059                        DO ji = mi0(iirnf(jl,jr)    ), mi1(iirnf(jl,jr)    ) 
    10661060                           DO jn = 1, 3 
    10671061                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    10701064                     END DO 
    10711065                     ! ji+1,jj-2 
    1072                      iipt0 = MAX( 1, MIN( ii+1,jpi  ) ) 
    1073                      iipt1 = MAX( 0, MIN( ii+1,jpi-1) ) 
    1074                      DO jj = ijpt0, ijpt1 
    1075                         DO ji = iipt0, iipt1 
     1066                     DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 
     1067                        DO ji = mi0(iirnf(jl,jr) + 1), mi1(iirnf(jl,jr) + 1) 
    10761068                           DO jn = 1, 3  
    10771069                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    10801072                     END DO 
    10811073                     ! ji+1,jj+2 
    1082                      ijpt0 = MAX( 1, MIN( ij+2,jpj  ) ) 
    1083                      ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 
    1084                      DO jj = ijpt0, ijpt1 
    1085                         DO ji = iipt0, iipt1 
     1074                     DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 
     1075                        DO ji = mi0(iirnf(jl,jr) + 1), mi1(iirnf(jl,jr) + 1) 
    10861076                           DO jn = 1, 3  
    10871077                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    10901080                     END DO 
    10911081                     ! ji+2,jj-2 
    1092                      iipt0 = MAX( 1, MIN( ii+2,jpi  ) ) 
    1093                      iipt1 = MAX( 0, MIN( ii+2,jpi-1) ) 
    1094                      DO jj = ijpt0, ijpt1 
    1095                         DO ji = iipt0, iipt1 
     1082                     DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 
     1083                        DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 
    10961084                           DO jn = 1, 3  
    10971085                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11001088                     END DO 
    11011089                     ! ji+2,jj+2 
    1102                      ijpt0 = MAX( 1, MIN( ij+2,jpj  ) ) 
    1103                      ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 
    1104                      DO jj = ijpt0, ijpt1 
    1105                         DO ji = iipt0, iipt1 
     1090                     DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 
     1091                        DO ji = mi0(iirnf(jl,jr) + 1), mi1(iirnf(jl,jr) + 1) 
    11061092                           DO jn = 1, 3   
    11071093                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11101096                     END DO 
    11111097                     ! ji+2,jj-1 
    1112                      ijpt0 = MAX( 1, MIN( ij-1,jpj  ) ) 
    1113                      ijpt1 = MAX( 0, MIN( ij-1,jpj-1) ) 
    1114                      DO jj = ijpt0, ijpt1 
    1115                         DO ji = iipt0, iipt1 
     1098                     DO jj = mj0(ijrnf(jl,jr) - 1), mj1(ijrnf(jl,jr) - 1) 
     1099                        DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 
    11161100                           DO jn = 1, 3 
    11171101                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11201104                     END DO 
    11211105                     ! ji+2,jj+1 
    1122                      ijpt0 = MAX( 1, MIN( ij+1,jpj  ) ) 
    1123                      ijpt1 = MAX( 0, MIN( ij+1,jpj-1) ) 
    1124                      DO jj = ijpt0, ijpt1 
    1125                         DO ji = iipt0, iipt1 
     1106                     DO jj = mj0(ijrnf(jl,jr) + 1), mj1(ijrnf(jl,jr) + 1) 
     1107                        DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 
    11261108                           DO jn = 1, 3  
    11271109                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11301112                     END DO 
    11311113                     ! ji+2,jj 
    1132                      ijpt0 = MAX( 1, MIN( ij,jpj  ) ) 
    1133                      ijpt1 = MAX( 0, MIN( ij,jpj-1) ) 
    1134                      DO jj = ijpt0, ijpt1 
    1135                         DO ji = iipt0, iipt1 
     1114                     DO jj = mj0(ijrnf(jl,jr)    ), mj1(ijrnf(jl,jr)    ) 
     1115                        DO ji = mi0(iirnf(jl,jr) + 2), mi1(iirnf(jl,jr) + 2) 
    11361116                           DO jn = 1, 3 
    11371117                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11401120                     END DO 
    11411121                     ! ji-2,jj 
    1142                      iipt0 = MAX( 1, MIN( ii-2,jpi  ) ) 
    1143                      iipt1 = MAX( 0, MIN( ii-2,jpi-1) ) 
    1144                      DO jj = ijpt0, ijpt1 
    1145                         DO ji = iipt0, iipt1 
     1122                     DO jj = mj0(ijrnf(jl,jr)    ), mj1(ijrnf(jl,jr)    ) 
     1123                        DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 
    11461124                           DO jn = 1, 3         
    11471125                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11501128                     END DO 
    11511129                     ! ji-2,jj-2 
    1152                      ijpt0 = MAX( 1, MIN( ij-2,jpj  ) ) 
    1153                      ijpt1 = MAX( 0, MIN( ij-2,jpj-1) ) 
    1154                      DO jj = ijpt0, ijpt1 
    1155                         DO ji = iipt0, iipt1 
     1130                     DO jj = mj0(ijrnf(jl,jr) - 2), mj1(ijrnf(jl,jr) - 2) 
     1131                        DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 
    11561132                           DO jn = 1, 3  
    11571133                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11601136                     END DO 
    11611137                     ! ji-2,jj+2 
    1162                      ijpt0 = MAX( 1, MIN( ij+2,jpj  ) ) 
    1163                      ijpt1 = MAX( 0, MIN( ij+2,jpj-1) ) 
    1164                      DO jj = ijpt0, ijpt1 
    1165                         DO ji = iipt0, iipt1 
     1138                     DO jj = mj0(ijrnf(jl,jr) + 2), mj1(ijrnf(jl,jr) + 2) 
     1139                        DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 
    11661140                           DO jn = 1, 3 
    11671141                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11701144                     END DO 
    11711145                     ! ji-2,jj-1 
    1172                      ijpt0 = MAX( 1, MIN( ij-1,jpj  ) ) 
    1173                      ijpt1 = MAX( 0, MIN( ij-1,jpj-1) ) 
    1174                      DO jj = ijpt0, ijpt1 
    1175                         DO ji = iipt0, iipt1 
     1146                     DO jj = mj0(ijrnf(jl,jr) - 1), mj1(ijrnf(jl,jr) - 1) 
     1147                        DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 
    11761148                           DO jn = 1, 3  
    11771149                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
     
    11801152                     END DO 
    11811153                     ! ji-2,jj+1 
    1182                      ijpt0 = MAX( 1, MIN( ij+1,jpj  ) ) 
    1183                      ijpt1 = MAX( 0, MIN( ij+1,jpj-1) ) 
    1184                      DO jj = ijpt0, ijpt1 
    1185                         DO ji = iipt0, iipt1 
     1154                     DO jj = mj0(ijrnf(jl,jr) + 1), mj1(ijrnf(jl,jr) + 1) 
     1155                        DO ji = mi0(iirnf(jl,jr) - 2), mi1(iirnf(jl,jr) - 2) 
    11861156                           DO jn = 1, 3  
    11871157                              zcoefr(ji,jj,jn) = MAX( zrup3, zcoefr(ji,jj,jn) ) 
  • trunk/NEMO/OPA_SRC/SBC/taumod.F90

    r3 r18  
    2222   !! * Share modules variables 
    2323   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   & 
    24       taux, tauy,      &  ! surface stress components in (i,j) referential 
    25       tauxg, tauyg        ! surface stress components in geographical 
    26       !                   ! referential (used in output) 
     24      taux, tauy,      &  !: surface stress components in (i,j) referential 
     25      tauxg, tauyg        !: surface stress components in geographical 
     26      !                   !  referential (used in output) 
    2727   !!---------------------------------------------------------------------- 
    2828   !!   OPA 9.0 , LODYC-IPSL  (2003) 
Note: See TracChangeset for help on using the changeset viewer.