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 719 for trunk/NEMO/OPA_SRC/DIA/diafwb.F90 – NEMO

Ignore:
Timestamp:
2007-10-16T16:59:56+02:00 (17 years ago)
Author:
ctlod
Message:

get back to the nemo_v2_3 version for trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DIA/diafwb.F90

    • Property svn:keywords changed from Id to Author Date Id Revision
    r711 r719  
    44   !! Ocean diagnostics: freshwater budget 
    55   !!====================================================================== 
    6    !! History :  8.2  !  01-02  (E. Durand)  Original code 
    7    !!            8.5  !  02-06  (G. Madec)  F90: Free form and module 
    8    !!            9.0  !  05-11  (V. Garnier) Surface pressure gradient organization 
    9    !!---------------------------------------------------------------------- 
    106#if ( defined key_orca_r2 || defined  key_orca_r4 ) && ! defined key_dynspg_rl && ! defined key_coupled 
    117   !!---------------------------------------------------------------------- 
    128   !!   NOT "key_dynspg_rl" and "key_orca_r2 or 4" 
    139   !!---------------------------------------------------------------------- 
    14    !!---------------------------------------------------------------------- 
    1510   !!   dia_fwb     : freshwater budget for global ocean configurations 
    1611   !!---------------------------------------------------------------------- 
     12   !! * Modules used 
    1713   USE oce             ! ocean dynamics and tracers 
    1814   USE dom_oce         ! ocean space and time domain 
    1915   USE phycst          ! physical constants 
    20    USE sbc_oce         ! ??? 
    2116   USE zdf_oce         ! ocean vertical physics 
    2217   USE in_out_manager  ! I/O manager 
     18   USE flxrnf          ! ??? 
     19   USE ocesbc          ! ??? 
     20   USE blk_oce         ! ??? 
     21   USE flxblk          ! atmospheric surface quantity 
    2322   USE lib_mpp         ! distributed memory computing library 
    2423 
     
    2625   PRIVATE 
    2726 
     27   !! * Routine accessibility 
    2828   PUBLIC dia_fwb    ! routine called by step.F90 
    2929 
     30   !! * Shared module variables 
    3031   LOGICAL, PUBLIC, PARAMETER ::   lk_diafwb = .TRUE.    !: fresh water budget flag 
    3132 
    32    REAL(wp)               ::   a_emp ,          & 
    33       &                        a_sshb, a_sshn, a_salb, a_saln 
    34    REAL(wp), DIMENSION(4) ::   a_flxi, a_flxo, a_temi, a_temo, a_sali, a_salo 
     33   !! * Module variables 
     34   REAL(wp) ::   & 
     35      a_emp , a_precip, a_rnf,   & 
     36      a_sshb, a_sshn, a_salb, a_saln,   & 
     37      a_aminus, a_aplus 
     38   REAL(wp), DIMENSION(4) ::   & 
     39      a_flxi, a_flxo, a_temi, a_temo, a_sali, a_salo 
    3540 
    3641   !! * Substitutions 
     
    3843#  include "vectopt_loop_substitute.h90" 
    3944   !!---------------------------------------------------------------------- 
    40    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
    41    !! $Header: $ 
    42    !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
     45   !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     46   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/DIA/diafwb.F90,v 1.11 2007/06/29 17:01:51 opalod Exp $  
     47   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    4348   !!---------------------------------------------------------------------- 
    4449 
     
    5055      !!      
    5156      !! ** Purpose : 
     57      !!  
     58      !! ** Method : 
     59      !!  
     60      !! History : 
     61      !!   8.2  !  01-02  (E. Durand)  Original code 
     62      !!   8.5  !  02-06  (G. Madec)  F90: Free form and module 
     63      !!   9.0  !  05-11  (V. Garnier) Surface pressure gradient organization 
    5264      !!---------------------------------------------------------------------- 
     65      !! * Arguments 
    5366      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    54       !! 
     67 
     68      !! * Local declarations 
     69      CHARACTER (len=32) ::  clname 
    5570      INTEGER :: inum             ! temporary logical unit 
    5671      INTEGER :: ji, jj, jk, jt   ! dummy loop indices 
     
    7085 
    7186         a_emp    = 0.e0 
     87         a_precip = 0.e0 
     88         a_rnf    = 0.e0 
    7289         a_sshb   = 0.e0 ! valeur de ssh au debut de la simulation 
    7390         a_salb   = 0.e0 ! valeur de sal au debut de la simulation 
     91         a_aminus = 0.e0 
     92         a_aplus  = 0.e0 
    7493         ! sshb used because diafwb called after tranxt (i.e. after the swap) 
    7594         a_sshb = SUM( e1t(:,:) * e2t(:,:) * sshb(:,:) * tmask_i(:,:) ) 
     
    89108      a_emp    = SUM( e1t(:,:) * e2t(:,:) * emp   (:,:) * tmask_i(:,:) ) 
    90109      IF( lk_mpp )   CALL mpp_sum( a_emp    )       ! sum over the global domain 
     110#if defined key_flx_bulk_monthly || defined key_flx_bulk_daily 
     111      a_precip = SUM( e1t(:,:) * e2t(:,:) * watm  (:,:) * tmask_i(:,:) ) 
     112      IF( lk_mpp )   CALL mpp_sum( a_precip )       ! sum over the global domain 
     113#endif 
     114      a_rnf    = SUM( e1t(:,:) * e2t(:,:) * runoff(:,:) * tmask_i(:,:) ) 
     115      IF( lk_mpp )   CALL mpp_sum( a_rnf    )       ! sum over the global domain 
     116 
     117      IF( aminus /= 0.e0 ) a_aminus = a_aminus + ( MIN( aplus, aminus ) / aminus ) 
     118      IF( aplus  /= 0.e0 ) a_aplus  = a_aplus  + ( MIN( aplus, aminus ) / aplus  ) 
    91119 
    92120      IF( kt == nitend ) THEN 
     
    114142         IF( lk_mpp )   CALL mpp_sum( zvol )      ! sum over the global domain 
    115143          
     144         a_aminus = a_aminus / ( nitend - nit000 + 1 ) 
     145         a_aplus  = a_aplus  / ( nitend - nit000 + 1 ) 
     146 
    116147         ! Conversion in m3 
    117148         a_emp    = a_emp * rdttra(1) * 1.e-3  
     149         a_precip = a_precip * rdttra(1) * 1.e-3 / rday 
     150         a_rnf    = a_rnf * rdttra(1) * 1.e-3 
    118151          
    119          ! emp correction to bring back the mean ssh to zero 
     152         ! Alpha1=Alpha0-Rest/(Precip+runoff) 
     153         !  C A U T I O N : precipitations are negative !!      
     154          
    120155         zempnew = a_sshn / ( ( nitend - nit000 + 1 ) * rdt ) * 1.e3 / zarea 
    121156 
     
    354389      IF ( kt == nitend .AND. cp_cfg == "orca" ) THEN 
    355390 
    356          CALL ctlopn( inum, 'STRAIT.dat', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     391         clname = 'STRAIT.dat' 
     392         CALL ctlopn( inum, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    357393            &         1, numout, lwp, 1 ) 
    358394         WRITE(inum,*) 
    359395         WRITE(inum,*)    'Net freshwater budget ' 
    360396         WRITE(inum,9010) '  emp    = ',a_emp,   ' m3 =', a_emp   /(FLOAT(nitend-nit000+1)*rdttra(1)) * 1.e-6,' Sv' 
     397         WRITE(inum,9010) '  precip = ',a_precip,' m3 =', a_precip/(FLOAT(nitend-nit000+1)*rdttra(1)) * 1.e-6,' Sv' 
     398         WRITE(inum,9010) '  a_rnf  = ',a_rnf,   ' m3 =', a_rnf   /(FLOAT(nitend-nit000+1)*rdttra(1)) * 1.e-6,' Sv' 
    361399         WRITE(inum,*) 
    362400         WRITE(inum,9010) '  zarea =',zarea 
     
    379417         WRITE(inum,9020) '  diff      =',(a_saln-a_salb)/zvol,' psu' 
    380418         WRITE(inum,9020) '  S-SLevitus=',a_saln/zvol,' psu' 
     419         WRITE(inum,*) 
     420         WRITE(inum,*)    'Coeff : ' 
     421         WRITE(inum,9030) '  Alpha+   =  ', a_aplus 
     422         WRITE(inum,9030) '  Alpha-   =  ', a_aminus 
     423         WRITE(inum,*) 
    381424         WRITE(inum,*) 
    382425         WRITE(inum,*)    'Gibraltar : ' 
Note: See TracChangeset for help on using the changeset viewer.