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

Ignore:
Timestamp:
2008-04-11T19:05:03+02:00 (16 years ago)
Author:
ctlod
Message:

merge dev_001_SBC branche with the trunk to include the New Surface Module package, see ticket: #113

File:
1 edited

Legend:

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

    r719 r888  
    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   !!---------------------------------------------------------------------- 
    610#if ( defined key_orca_r2 || defined  key_orca_r4 ) && ! defined key_dynspg_rl && ! defined key_coupled 
    711   !!---------------------------------------------------------------------- 
    812   !!   NOT "key_dynspg_rl" and "key_orca_r2 or 4" 
    913   !!---------------------------------------------------------------------- 
     14   !!---------------------------------------------------------------------- 
    1015   !!   dia_fwb     : freshwater budget for global ocean configurations 
    1116   !!---------------------------------------------------------------------- 
    12    !! * Modules used 
    1317   USE oce             ! ocean dynamics and tracers 
    1418   USE dom_oce         ! ocean space and time domain 
    1519   USE phycst          ! physical constants 
     20   USE sbc_oce         ! ??? 
    1621   USE zdf_oce         ! ocean vertical physics 
    1722   USE in_out_manager  ! I/O manager 
    18    USE flxrnf          ! ??? 
    19    USE ocesbc          ! ??? 
    20    USE blk_oce         ! ??? 
    21    USE flxblk          ! atmospheric surface quantity 
    2223   USE lib_mpp         ! distributed memory computing library 
    2324 
     
    2526   PRIVATE 
    2627 
    27    !! * Routine accessibility 
    2828   PUBLIC dia_fwb    ! routine called by step.F90 
    2929 
    30    !! * Shared module variables 
    3130   LOGICAL, PUBLIC, PARAMETER ::   lk_diafwb = .TRUE.    !: fresh water budget flag 
    3231 
    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 
     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 
    4035 
    4136   !! * Substitutions 
     
    4338#  include "vectopt_loop_substitute.h90" 
    4439   !!---------------------------------------------------------------------- 
    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  
     40   !!   OPA 9.0 , LOCEAN-IPSL (2006)  
     41   !! $Header: $ 
     42   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    4843   !!---------------------------------------------------------------------- 
    4944 
     
    5550      !!      
    5651      !! ** 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 
    6452      !!---------------------------------------------------------------------- 
    65       !! * Arguments 
    6653      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    67  
    68       !! * Local declarations 
    69       CHARACTER (len=32) ::  clname 
     54      !! 
    7055      INTEGER :: inum             ! temporary logical unit 
    7156      INTEGER :: ji, jj, jk, jt   ! dummy loop indices 
     
    8570 
    8671         a_emp    = 0.e0 
    87          a_precip = 0.e0 
    88          a_rnf    = 0.e0 
    8972         a_sshb   = 0.e0 ! valeur de ssh au debut de la simulation 
    9073         a_salb   = 0.e0 ! valeur de sal au debut de la simulation 
    91          a_aminus = 0.e0 
    92          a_aplus  = 0.e0 
    9374         ! sshb used because diafwb called after tranxt (i.e. after the swap) 
    9475         a_sshb = SUM( e1t(:,:) * e2t(:,:) * sshb(:,:) * tmask_i(:,:) ) 
     
    10889      a_emp    = SUM( e1t(:,:) * e2t(:,:) * emp   (:,:) * tmask_i(:,:) ) 
    10990      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  ) 
    11991 
    12092      IF( kt == nitend ) THEN 
     
    142114         IF( lk_mpp )   CALL mpp_sum( zvol )      ! sum over the global domain 
    143115          
    144          a_aminus = a_aminus / ( nitend - nit000 + 1 ) 
    145          a_aplus  = a_aplus  / ( nitend - nit000 + 1 ) 
    146  
    147116         ! Conversion in m3 
    148117         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 
    151118          
    152          ! Alpha1=Alpha0-Rest/(Precip+runoff) 
    153          !  C A U T I O N : precipitations are negative !!      
    154           
     119         ! emp correction to bring back the mean ssh to zero 
    155120         zempnew = a_sshn / ( ( nitend - nit000 + 1 ) * rdt ) * 1.e3 / zarea 
    156121 
     
    389354      IF ( kt == nitend .AND. cp_cfg == "orca" ) THEN 
    390355 
    391          clname = 'STRAIT.dat' 
    392          CALL ctlopn( inum, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     356         CALL ctlopn( inum, 'STRAIT.dat', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
    393357            &         1, numout, lwp, 1 ) 
    394358         WRITE(inum,*) 
    395359         WRITE(inum,*)    'Net freshwater budget ' 
    396360         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' 
    399361         WRITE(inum,*) 
    400362         WRITE(inum,9010) '  zarea =',zarea 
     
    417379         WRITE(inum,9020) '  diff      =',(a_saln-a_salb)/zvol,' psu' 
    418380         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,*) 
    424381         WRITE(inum,*) 
    425382         WRITE(inum,*)    'Gibraltar : ' 
Note: See TracChangeset for help on using the changeset viewer.