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.
bulk.F90 in trunk/NEMO/OPA_SRC/SBC – NEMO

source: trunk/NEMO/OPA_SRC/SBC/bulk.F90 @ 3

Last change on this file since 3 was 3, checked in by opalod, 20 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 KB
Line 
1MODULE bulk
2   !!======================================================================
3   !!                           ***  bulk  ***
4   !!======================================================================
5
6   !!----------------------------------------------------------------------
7   !!   bulk          : computation of fluxes using bulk formulation
8   !!----------------------------------------------------------------------
9   !! * Modules used   
10   USE oce             ! ocean dynamics and tracers
11   USE dom_oce         ! ocean space and time domain
12   USE ice_oce         ! bulk variable 
13   USE ocfzpt          ! ocean freezing point
14   USE flxblk          ! bulk formulae
15   USE blk_oce         ! bulk variable
16   USE taumod
17   USE phycst          ! physical constants
18   USE in_out_manager  ! I/O manager
19
20   IMPLICIT NONE
21   PRIVATE
22
23   !! * Routine accessibility
24   PUBLIC blk        ! called by flx.F90   
25   !!----------------------------------------------------------------------
26   !!   OPA 9.0 , LODYC-IPSL  (2003)
27   !!----------------------------------------------------------------------
28CONTAINS
29
30   SUBROUTINE blk( kt )
31      !!---------------------------------------------------------------------
32      !!                    ***  ROUTINE blk  ***
33      !!       
34      !! ** Purpose :   provide the heat fluxes on ice and ocean
35      !!                using bulk formulation
36      !!
37      !! History :
38      !!   9.0  !  03-11  (C. Ethe and G. Madec)  F90: Free form and MODULE
39      !!----------------------------------------------------------------------
40      !! * arguments
41      INTEGER, INTENT( in  ) ::   kt   ! ocean time step
42
43      !! * Local declarations   
44      REAL(wp), DIMENSION(jpi,jpj) ::   &
45         zsst , zsss
46# if ! defined key_ice_lim
47      INTEGER  ::   ji, jj         ! dummy loop indices 
48      REAL(wp) ::   ztgel, zicopa
49# endif
50      !!---------------------------------------------------------------------
51
52     ! Initialisation
53     IF( kt == nit000) THEN
54      ! computation of rdtbs2
55        IF( nacc == 1 ) THEN
56           rdtbs2 = nfbulk * rdtmin * 0.5
57        ELSE
58           rdtbs2 = nfbulk * rdt * 0.5
59        ENDIF
60        IF ( .NOT.ln_rstart ) THEN
61           gsst(:,:) =  ( nfbulk - 1 ) * ( tn(:,:,1) + rt0 )
62           gsss(:,:) =  ( nfbulk - 1 ) *   sn(:,:,1)
63        ENDIF
64     ENDIF
65
66# if ! defined key_ice_lim
67      ! opa model ice freeze()     
68      DO jj = 1, jpj
69         DO ji = 1, jpi
70            ztgel  = fzptn(ji,jj)
71            zicopa = tmask(ji,jj,1)
72            IF( tn(ji,jj,1) >= ztgel ) zicopa = 0.
73            freeze(ji,jj) = zicopa
74         END DO
75      END DO
76# endif
77
78      gsst(:,:) = gsst(:,:) + tn(:,:,1) + rt0 
79      gsss(:,:) = gsss(:,:) + sn(:,:,1)
80
81      !  Computation of the fluxes       
82      IF( MOD( kt - 1 , nfbulk ) == 0 ) THEN
83
84!i       zsst(:,:) = gsst(:,:) / REAL( nfbulk )
85         zsst(:,:) = gsst(:,:) / REAL( nfbulk ) * tmask(:,:,1)
86         zsss(:,:) = gsss(:,:) / REAL( nfbulk )
87         CALL flx_blk( kt, zsst )   
88     
89         gsst(:,:) = 0.   
90         gsss(:,:) = 0. 
91
92# if ! defined key_ice_lim
93         IF( l_ctl .AND. lwp ) THEN         ! print mean trends (used for debugging)
94            WRITE(numout,*) ' Forcings '
95            WRITE(numout,*) ' qsr_oce  : ', SUM( qsr_oce (:,:) * tmask(:,:,1) )
96            WRITE(numout,*) ' qsr_ice  : ', SUM( qsr_ice (:,:) * tmask(:,:,1) )
97            WRITE(numout,*) ' qnsr_oce : ', SUM( qnsr_oce(:,:) * tmask(:,:,1) )
98            WRITE(numout,*) ' qnsr_ice : ', SUM( qnsr_ice(:,:) * tmask(:,:,1) )
99            WRITE(numout,*) ' evap     : ', SUM( evap    (:,:) * tmask(:,:,1) )
100            WRITE(numout,*) ' precip   : ', SUM( tprecip (:,:) * tmask(:,:,1) ) / rday
101            WRITE(numout,*) ' Snow     : ', SUM( sprecip (:,:) * tmask(:,:,1) ) / rday
102            WRITE(numout,*) ' u-stress : ', SUM( taux    (:,:) * umask(:,:,1) )
103            WRITE(numout,*) ' v-stress : ', SUM( tauy    (:,:) * vmask(:,:,1) )
104            WRITE(numout,*) ' sst      : ', SUM( zsst    (:,:) * tmask(:,:,1) )
105            WRITE(numout,*) ' sss      : ', SUM( zsss    (:,:) * tmask(:,:,1) )
106            WRITE(numout,*)
107         ENDIF
108# endif   
109      ENDIF
110 
111   END SUBROUTINE blk
112 
113   !!======================================================================
114END MODULE bulk
Note: See TracBrowser for help on using the repository browser.