1 | !!---------------------------------------------------------------------- |
---|
2 | !! *** tau_oasis_ice.h90 *** |
---|
3 | !!---------------------------------------------------------------------- |
---|
4 | |
---|
5 | REAL(wp) :: ztaueuw (1:jpi,1:jpj) ! eastward wind stress over water |
---|
6 | REAL(wp) :: ztaunuw (1:jpi,1:jpj) ! northward wind stress over water |
---|
7 | REAL(wp) :: ztaueui (1:jpi,1:jpj) ! eastward wind stress over ice |
---|
8 | REAL(wp) :: ztaunui (1:jpi,1:jpj) ! northward wind stress over ice |
---|
9 | REAL(wp) :: ztaueu (1:jpi,1:jpj) ! eastward wind stress combined |
---|
10 | REAL(wp) :: ztaunu (1:jpi,1:jpj) ! northward wind stress combined |
---|
11 | REAL(wp) :: ztauevw (1:jpi,1:jpj) |
---|
12 | REAL(wp) :: ztaunvw (1:jpi,1:jpj) |
---|
13 | REAL(wp) :: ztauevi (1:jpi,1:jpj) |
---|
14 | REAL(wp) :: ztaunvi (1:jpi,1:jpj) |
---|
15 | REAL(wp) :: ztauev (1:jpi,1:jpj) |
---|
16 | REAL(wp) :: ztaunv (1:jpi,1:jpj) |
---|
17 | REAL(wp) :: ztauzv (1:jpi,1:jpj) |
---|
18 | |
---|
19 | !!---------------------------------------------------------------------- |
---|
20 | !! tau : update the surface stress - coupled case with LIM |
---|
21 | !! sea-ice model |
---|
22 | !!---------------------------------------------------------------------- |
---|
23 | !!---------------------------------------------------------------------- |
---|
24 | !! OPA 9.0 , LOCEAN-IPSL (2006) |
---|
25 | !! $Header$ |
---|
26 | !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) |
---|
27 | !!---------------------------------------------------------------------- |
---|
28 | |
---|
29 | CONTAINS |
---|
30 | |
---|
31 | SUBROUTINE tau( kt ) |
---|
32 | !!--------------------------------------------------------------------- |
---|
33 | !! *** ROUTINE tau *** |
---|
34 | !! |
---|
35 | !! ** Purpose : provide to the ocean the stress at each time step |
---|
36 | !! |
---|
37 | !! ** Method : Coupled case with LIM sea-ice model |
---|
38 | !! Read wind stress from a coupled Atmospheric model |
---|
39 | !! - horizontal interpolation is done in OASIS |
---|
40 | !! They are given in the 3D referential |
---|
41 | !! (3 components at both U- and V-points) |
---|
42 | !! |
---|
43 | !! CAUTION: never mask the surface stress field ! |
---|
44 | !! |
---|
45 | !! ** Action : update at each time-step the two components of the |
---|
46 | !! surface stress in both (i,j) and geographical ref. |
---|
47 | !! |
---|
48 | !! References : The OASIS User Guide, Version 3.0 |
---|
49 | !! |
---|
50 | !! History : |
---|
51 | !! 9.0 ! 04-10 (R. Redler) original Code for OASIS3 |
---|
52 | !! 9.0 ! 05-12 (W. Park, N. Keenlyside) Removal of z-components |
---|
53 | !!---------------------------------------------------------------------- |
---|
54 | !! * Modules used |
---|
55 | USE in_out_manager, only:numout ! I/O manager |
---|
56 | !! * Arguments |
---|
57 | INTEGER, INTENT( in ) :: kt ! ocean time step |
---|
58 | |
---|
59 | !! * Local declarations |
---|
60 | INTEGER :: ji,jj |
---|
61 | INTEGER :: var_id |
---|
62 | |
---|
63 | INTEGER :: info |
---|
64 | |
---|
65 | INTEGER :: dater |
---|
66 | |
---|
67 | LOGICAL, SAVE :: lfirstt=.true. |
---|
68 | |
---|
69 | !!--------------------------------------------------------------------- |
---|
70 | |
---|
71 | ! 0. Initialization |
---|
72 | !------------------ |
---|
73 | ! |
---|
74 | dater = ( kt - nit000 ) * rdttra(1) |
---|
75 | ! |
---|
76 | ! 1. Receive wind stress fields and rotate them onto OPA grid |
---|
77 | !------------------------------------------------------------ |
---|
78 | ! |
---|
79 | var_id = recv_id(1) |
---|
80 | CALL cpl_prism_recv ( var_id, dater, ztaueuw, info ) |
---|
81 | |
---|
82 | var_id = recv_id(2) |
---|
83 | CALL cpl_prism_recv ( var_id, dater, ztaunuw, info ) |
---|
84 | |
---|
85 | var_id = recv_id(3) |
---|
86 | CALL cpl_prism_recv ( var_id, dater, ztaueui, info ) |
---|
87 | |
---|
88 | var_id = recv_id(4) |
---|
89 | CALL cpl_prism_recv ( var_id, dater, ztaunui, info ) |
---|
90 | |
---|
91 | var_id = recv_id(5) |
---|
92 | CALL cpl_prism_recv ( var_id, dater, ztauevw, info ) |
---|
93 | |
---|
94 | var_id = recv_id(6) |
---|
95 | CALL cpl_prism_recv ( var_id, dater, ztaunvw, info ) |
---|
96 | |
---|
97 | var_id = recv_id(7) |
---|
98 | CALL cpl_prism_recv ( var_id, dater, ztauevi, info ) |
---|
99 | |
---|
100 | var_id = recv_id(8) |
---|
101 | CALL cpl_prism_recv ( var_id, dater, ztaunvi, info ) |
---|
102 | |
---|
103 | ! |
---|
104 | ! ... add field over water and ice |
---|
105 | ! |
---|
106 | DO jj = 1, jpj |
---|
107 | DO ji = 1, jpi |
---|
108 | ztaueu(ji,jj) = ztaueuw(ji,jj) * frld(ji,jj) + ztaueui(ji,jj) * ( 1.0 - frld(ji,jj) ) |
---|
109 | ztaunu(ji,jj) = ztaunuw(ji,jj) * frld(ji,jj) + ztaunui(ji,jj) * ( 1.0 - frld(ji,jj) ) |
---|
110 | ztauev(ji,jj) = ztauevw(ji,jj) * frld(ji,jj) + ztauevi(ji,jj) * ( 1.0 - frld(ji,jj) ) |
---|
111 | ztaunv(ji,jj) = ztaunvw(ji,jj) * frld(ji,jj) + ztaunvi(ji,jj) * ( 1.0 - frld(ji,jj) ) |
---|
112 | ENDDO |
---|
113 | ENDDO |
---|
114 | ! |
---|
115 | ! ... rotate vector components |
---|
116 | ! |
---|
117 | CALL repcmo ( ztaueu, ztaunu, ztauev, ztaunv, taux, tauy, kt ) |
---|
118 | |
---|
119 | ! |
---|
120 | END SUBROUTINE tau |
---|