[532] | 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 |
---|