Changeset 888 for trunk/NEMO/OPA_SRC/DIA/diafwb.F90
- Timestamp:
- 2008-04-11T19:05:03+02:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DIA/diafwb.F90
r719 r888 4 4 !! Ocean diagnostics: freshwater budget 5 5 !!====================================================================== 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 !!---------------------------------------------------------------------- 6 10 #if ( defined key_orca_r2 || defined key_orca_r4 ) && ! defined key_dynspg_rl && ! defined key_coupled 7 11 !!---------------------------------------------------------------------- 8 12 !! NOT "key_dynspg_rl" and "key_orca_r2 or 4" 9 13 !!---------------------------------------------------------------------- 14 !!---------------------------------------------------------------------- 10 15 !! dia_fwb : freshwater budget for global ocean configurations 11 16 !!---------------------------------------------------------------------- 12 !! * Modules used13 17 USE oce ! ocean dynamics and tracers 14 18 USE dom_oce ! ocean space and time domain 15 19 USE phycst ! physical constants 20 USE sbc_oce ! ??? 16 21 USE zdf_oce ! ocean vertical physics 17 22 USE in_out_manager ! I/O manager 18 USE flxrnf ! ???19 USE ocesbc ! ???20 USE blk_oce ! ???21 USE flxblk ! atmospheric surface quantity22 23 USE lib_mpp ! distributed memory computing library 23 24 … … 25 26 PRIVATE 26 27 27 !! * Routine accessibility28 28 PUBLIC dia_fwb ! routine called by step.F90 29 29 30 !! * Shared module variables31 30 LOGICAL, PUBLIC, PARAMETER :: lk_diafwb = .TRUE. !: fresh water budget flag 32 31 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 40 35 41 36 !! * Substitutions … … 43 38 # include "vectopt_loop_substitute.h90" 44 39 !!---------------------------------------------------------------------- 45 !! OPA 9.0 , LOCEAN-IPSL (200 5)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.txt40 !! OPA 9.0 , LOCEAN-IPSL (2006) 41 !! $Header: $ 42 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 48 43 !!---------------------------------------------------------------------- 49 44 … … 55 50 !! 56 51 !! ** Purpose : 57 !!58 !! ** Method :59 !!60 !! History :61 !! 8.2 ! 01-02 (E. Durand) Original code62 !! 8.5 ! 02-06 (G. Madec) F90: Free form and module63 !! 9.0 ! 05-11 (V. Garnier) Surface pressure gradient organization64 52 !!---------------------------------------------------------------------- 65 !! * Arguments66 53 INTEGER, INTENT( in ) :: kt ! ocean time-step index 67 68 !! * Local declarations 69 CHARACTER (len=32) :: clname 54 !! 70 55 INTEGER :: inum ! temporary logical unit 71 56 INTEGER :: ji, jj, jk, jt ! dummy loop indices … … 85 70 86 71 a_emp = 0.e0 87 a_precip = 0.e088 a_rnf = 0.e089 72 a_sshb = 0.e0 ! valeur de ssh au debut de la simulation 90 73 a_salb = 0.e0 ! valeur de sal au debut de la simulation 91 a_aminus = 0.e092 a_aplus = 0.e093 74 ! sshb used because diafwb called after tranxt (i.e. after the swap) 94 75 a_sshb = SUM( e1t(:,:) * e2t(:,:) * sshb(:,:) * tmask_i(:,:) ) … … 108 89 a_emp = SUM( e1t(:,:) * e2t(:,:) * emp (:,:) * tmask_i(:,:) ) 109 90 IF( lk_mpp ) CALL mpp_sum( a_emp ) ! sum over the global domain 110 #if defined key_flx_bulk_monthly || defined key_flx_bulk_daily111 a_precip = SUM( e1t(:,:) * e2t(:,:) * watm (:,:) * tmask_i(:,:) )112 IF( lk_mpp ) CALL mpp_sum( a_precip ) ! sum over the global domain113 #endif114 a_rnf = SUM( e1t(:,:) * e2t(:,:) * runoff(:,:) * tmask_i(:,:) )115 IF( lk_mpp ) CALL mpp_sum( a_rnf ) ! sum over the global domain116 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 )119 91 120 92 IF( kt == nitend ) THEN … … 142 114 IF( lk_mpp ) CALL mpp_sum( zvol ) ! sum over the global domain 143 115 144 a_aminus = a_aminus / ( nitend - nit000 + 1 )145 a_aplus = a_aplus / ( nitend - nit000 + 1 )146 147 116 ! Conversion in m3 148 117 a_emp = a_emp * rdttra(1) * 1.e-3 149 a_precip = a_precip * rdttra(1) * 1.e-3 / rday150 a_rnf = a_rnf * rdttra(1) * 1.e-3151 118 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 155 120 zempnew = a_sshn / ( ( nitend - nit000 + 1 ) * rdt ) * 1.e3 / zarea 156 121 … … 389 354 IF ( kt == nitend .AND. cp_cfg == "orca" ) THEN 390 355 391 clname = 'STRAIT.dat' 392 CALL ctlopn( inum, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 356 CALL ctlopn( inum, 'STRAIT.dat', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 393 357 & 1, numout, lwp, 1 ) 394 358 WRITE(inum,*) 395 359 WRITE(inum,*) 'Net freshwater budget ' 396 360 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'399 361 WRITE(inum,*) 400 362 WRITE(inum,9010) ' zarea =',zarea … … 417 379 WRITE(inum,9020) ' diff =',(a_saln-a_salb)/zvol,' psu' 418 380 WRITE(inum,9020) ' S-SLevitus=',a_saln/zvol,' psu' 419 WRITE(inum,*)420 WRITE(inum,*) 'Coeff : '421 WRITE(inum,9030) ' Alpha+ = ', a_aplus422 WRITE(inum,9030) ' Alpha- = ', a_aminus423 WRITE(inum,*)424 381 WRITE(inum,*) 425 382 WRITE(inum,*) 'Gibraltar : '
Note: See TracChangeset
for help on using the changeset viewer.