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

source: trunk/NEMO/OPA_SRC/SBC/ocesbc_cpl_ice.h90 @ 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: 3.7 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                       ***  ocesbc_cpl_ice.h90  ***
3   !!----------------------------------------------------------------------
4
5   SUBROUTINE oce_sbc(kt)
6      !!---------------------------------------------------------------------
7      !!                 ***  ROUTINE oce_sbc  ***
8      !!                   
9      !! ** Purpose :   Ocean surface boundaries conditions with
10      !!        Louvain la Neuve Sea Ice Model in coupled mode
11      !!
12      !! History :
13      !!   1.0  !  00-10  (O. Marti)  Original code
14      !!   2.0  !  02-12  (G. Madec)  F90: Free form and module
15      !!----------------------------------------------------------------------
16      !! * Local declarations
17      INTEGER ::   ji, jj                   ! dummy loop indices
18      REAL(wp) ::   ztx, ztaux, zty, ztauy, ztrp, zsrp
19      REAL(wp) ::   ztdta, ztgel, zqrp
20
21      !!----------------------------------------------------------------------
22      !!  OPA 8.5, LODYC-IPSL (2002)
23      !!----------------------------------------------------------------------
24 
25      !!----------------------------------------------------------------------       
26      ! 1. initialization to zero at kt = nit000
27      ! ---------------------------------------
28     
29      IF( kt == nit000 ) THEN     
30         qsr   (:,:) = 0.e0
31         freeze(:,:) = 0.e0
32         qt    (:,:) = 0.e0
33         q     (:,:) = 0.e0
34         qrp   (:,:) = 0.e0
35         emp   (:,:) = 0.e0
36         emps  (:,:) = 0.e0
37         erp   (:,:) = 0.e0
38#if defined key_dynspg_fsc
39         dmp   (:,:) = 0.e0
40#endif
41      ENDIF
42
43      IF( MOD( kt-1, nfice ) == 0 ) THEN
44
45         CALL oce_sbc_dmp   ! Computation of internal and evaporation damping terms       
46
47         ! Surface heat flux (W/m2)
48         ! -----------------------
49
50         ! restoring heat flux
51         DO jj = 1, jpj
52            DO ji = 1, jpi
53               ztgel = fzptn(ji,jj)
54#if defined key_dtasst
55               ztdta = MAX( sst(ji,jj),    ztgel )
56#else
57               ztdta = MAX( t_dta(ji,jj,1), ztgel )
58#endif
59               zqrp = ztrp * ( tb(ji,jj,1) - ztdta )
60
61               qrp(ji,jj) = (1.0-freeze(ji,jj) ) * zqrp
62            END DO
63         END DO
64
65         ! non solar heat flux + solar flux + restoring
66         q  (:,:) = fnsolar(:,:) + fsolar(:,:) + qrp(:,:)
67         qt (:,:) = q(:,:)
68
69         ! solar flux
70         qsr(:,:) = fsolar(:,:)
71
72#if defined key_dynspg_fsc 
73         ! total concentration/dilution effect (use on SSS)
74         emps(:,:) = fmass(:,:) + fsalt(:,:) + runoff(:,:) + erp(:,:)
75
76         ! total volume flux (use on sea-surface height)
77         emp (:,:) = fmass(:,:)  -  dmp(:,:) + runoff(:,:) + erp(:,:)
78
79#else
80         ! Rigid-lid (emp=emps=E-P-R+Erp)
81         ! freshwater flux
82         emps(:,:) = fmass(:,:) + fsalt(:,:) + runoff(:,:) + erp(:,:)
83         emp (:,:) = emps(:,:)
84
85#endif
86
87         DO jj = 1, jpjm1
88            DO ji = 1, fs_jpim1   ! vertor opt.
89               ztx   = 0.5 * ( freeze(ji+1,jj) + freeze(ji+1,jj+1) )
90               ztaux = 0.5 * ( ftaux (ji+1,jj) + ftaux (ji+1,jj+1) )
91               taux(ji,jj) = (1.0-ztx) * taux(ji,jj) + ztx * ztaux
92
93               zty   = 0.5 * ( freeze(ji,jj+1) + freeze(ji+1,jj+1) )
94               ztauy = 0.5 * ( ftauy (ji,jj+1) + ftauy (ji+1,jj+1) )
95               tauy(ji,jj) = (1.0-zty) * tauy(ji,jj) + zty * ztauy
96            END DO
97         END DO
98         CALL lbc_lnk( taux, 'U', -1. )
99         CALL lbc_lnk( tauy, 'V', -1. )   
100
101         ! Re-initialization of fluxes
102         sst_io(:,:) = 0.0
103         sss_io(:,:) = 0.0
104         u_io  (:,:) = 0.0
105         v_io  (:,:) = 0.0
106         gtaux (:,:) = 0.
107         gtauy (:,:) = 0.
108
109      ENDIF
110
111   END SUBROUTINE oce_sbc
Note: See TracBrowser for help on using the repository browser.