Changeset 5903
- Timestamp:
- 2015-11-20T11:22:11+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_ww3_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r5900 r5903 736 736 SELECT CASE( TRIM( sn_snd_crtw%cldes ) ) 737 737 CASE( 'none' ) ; ssnd(jps_ocxw:jps_ocyw)%laction = .FALSE. 738 CASE( 'coupled' ) ; ssnd(jps_ocxw:jps_ocyw)%laction = .TRUE. 738 CASE( 'oce only' ) ; ssnd(jps_ocxw:jps_ocyw)%laction = .TRUE. 739 CASE( 'weighted oce and ice' ) ! nothing to do 740 CASE( 'mixed oce-ice' ) ; ssnd(jps_ivx1:jps_ivz1)%laction = .FALSE. 739 741 CASE default ; CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_crtw%cldes' ) 740 742 END SELECT … … 1925 1927 ! ! Surface current ! 1926 1928 ! ! ------------------------- ! 1927 IF( ssnd(jps_ocx1)%laction .OR. ssnd(jps_ocxw)%laction .OR. ssnd(jps_ocyw)%laction) THEN1929 IF( ssnd(jps_ocx1)%laction ) THEN 1928 1930 ! 1929 1931 ! j+1 j -----V---F … … 2056 2058 IF( ssnd(jps_ivy1)%laction ) CALL cpl_snd( jps_ivy1, isec, RESHAPE ( zity1, (/jpi,jpj,1/) ), info ) ! ice y current 1st grid 2057 2059 IF( ssnd(jps_ivz1)%laction ) CALL cpl_snd( jps_ivz1, isec, RESHAPE ( zitz1, (/jpi,jpj,1/) ), info ) ! ice z current 1st grid 2058 ! 2059 !currents to wave model 2060 ! 2061 ENDIF 2062 ! ! ------------------------- ! 2063 ! ! Surface current to waves ! 2064 ! ! ------------------------- ! 2065 IF( ssnd(jps_ocxw)%laction .OR. ssnd(jps_ocyw)%laction ) THEN 2066 ! 2067 ! j+1 j -----V---F 2068 ! surface velocity always sent from T point ! | 2069 ! j | T U 2070 ! | | 2071 ! j j-1 -I-------| 2072 ! (for I) | | 2073 ! i-1 i i 2074 ! i i+1 (for I) 2075 SELECT CASE( TRIM( sn_snd_crtw%cldes ) ) 2076 CASE( 'oce only' ) ! C-grid ==> T 2077 DO jj = 2, jpjm1 2078 DO ji = fs_2, fs_jpim1 ! vector opt. 2079 zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj ,1) ) 2080 zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji ,jj-1,1) ) 2081 END DO 2082 END DO 2083 CASE( 'weighted oce and ice' ) 2084 SELECT CASE ( cp_ice_msh ) 2085 CASE( 'C' ) ! Ocean and Ice on C-grid ==> T 2086 DO jj = 2, jpjm1 2087 DO ji = fs_2, fs_jpim1 ! vector opt. 2088 zotx1(ji,jj) = 0.5 * ( un (ji,jj,1) + un (ji-1,jj ,1) ) * zfr_l(ji,jj) 2089 zoty1(ji,jj) = 0.5 * ( vn (ji,jj,1) + vn (ji ,jj-1,1) ) * zfr_l(ji,jj) 2090 zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj ) + u_ice(ji-1,jj ) ) * fr_i(ji,jj) 2091 zity1(ji,jj) = 0.5 * ( v_ice(ji,jj ) + v_ice(ji ,jj-1 ) ) * fr_i(ji,jj) 2092 END DO 2093 END DO 2094 CASE( 'I' ) ! Ocean on C grid, Ice on I-point (B-grid) ==> T 2095 DO jj = 2, jpjm1 2096 DO ji = 2, jpim1 ! NO vector opt. 2097 zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj ,1) ) * zfr_l(ji,jj) 2098 zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji ,jj-1,1) ) * zfr_l(ji,jj) 2099 zitx1(ji,jj) = 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1) & 2100 & + u_ice(ji+1,jj ) + u_ice(ji,jj ) ) * fr_i(ji,jj) 2101 zity1(ji,jj) = 0.25 * ( v_ice(ji+1,jj+1) + v_ice(ji,jj+1) & 2102 & + v_ice(ji+1,jj ) + v_ice(ji,jj ) ) * fr_i(ji,jj) 2103 END DO 2104 END DO 2105 CASE( 'F' ) ! Ocean on C grid, Ice on F-point (B-grid) ==> T 2106 DO jj = 2, jpjm1 2107 DO ji = 2, jpim1 ! NO vector opt. 2108 zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj ,1) ) * zfr_l(ji,jj) 2109 zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji ,jj-1,1) ) * zfr_l(ji,jj) 2110 zitx1(ji,jj) = 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1) & 2111 & + u_ice(ji-1,jj ) + u_ice(ji,jj ) ) * fr_i(ji,jj) 2112 zity1(ji,jj) = 0.25 * ( v_ice(ji-1,jj-1) + v_ice(ji,jj-1) & 2113 & + v_ice(ji-1,jj ) + v_ice(ji,jj ) ) * fr_i(ji,jj) 2114 END DO 2115 END DO 2116 END SELECT 2117 CALL lbc_lnk( zitx1, 'T', -1. ) ; CALL lbc_lnk( zity1, 'T', -1. ) 2118 CASE( 'mixed oce-ice' ) 2119 SELECT CASE ( cp_ice_msh ) 2120 CASE( 'C' ) ! Ocean and Ice on C-grid ==> T 2121 DO jj = 2, jpjm1 2122 DO ji = fs_2, fs_jpim1 ! vector opt. 2123 zotx1(ji,jj) = 0.5 * ( un (ji,jj,1) + un (ji-1,jj ,1) ) * zfr_l(ji,jj) & 2124 & + 0.5 * ( u_ice(ji,jj ) + u_ice(ji-1,jj ) ) * fr_i(ji,jj) 2125 zoty1(ji,jj) = 0.5 * ( vn (ji,jj,1) + vn (ji ,jj-1,1) ) * zfr_l(ji,jj) & 2126 & + 0.5 * ( v_ice(ji,jj ) + v_ice(ji ,jj-1 ) ) * fr_i(ji,jj) 2127 END DO 2128 END DO 2129 CASE( 'I' ) ! Ocean on C grid, Ice on I-point (B-grid) ==> T 2130 DO jj = 2, jpjm1 2131 DO ji = 2, jpim1 ! NO vector opt. 2132 zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj ,1) ) * zfr_l(ji,jj) & 2133 & + 0.25 * ( u_ice(ji+1,jj+1) + u_ice(ji,jj+1) & 2134 & + u_ice(ji+1,jj ) + u_ice(ji,jj ) ) * fr_i(ji,jj) 2135 zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji ,jj-1,1) ) * zfr_l(ji,jj) & 2136 & + 0.25 * ( v_ice(ji+1,jj+1) + v_ice(ji,jj+1) & 2137 & + v_ice(ji+1,jj ) + v_ice(ji,jj ) ) * fr_i(ji,jj) 2138 END DO 2139 END DO 2140 CASE( 'F' ) ! Ocean on C grid, Ice on F-point (B-grid) ==> T 2141 DO jj = 2, jpjm1 2142 DO ji = 2, jpim1 ! NO vector opt. 2143 zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj ,1) ) * zfr_l(ji,jj) & 2144 & + 0.25 * ( u_ice(ji-1,jj-1) + u_ice(ji,jj-1) & 2145 & + u_ice(ji-1,jj ) + u_ice(ji,jj ) ) * fr_i(ji,jj) 2146 zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji ,jj-1,1) ) * zfr_l(ji,jj) & 2147 & + 0.25 * ( v_ice(ji-1,jj-1) + v_ice(ji,jj-1) & 2148 & + v_ice(ji-1,jj ) + v_ice(ji,jj ) ) * fr_i(ji,jj) 2149 END DO 2150 END DO 2151 END SELECT 2152 END SELECT 2153 CALL lbc_lnk( zotx1, ssnd(jps_ocxw)%clgrid, -1. ) ; CALL lbc_lnk( zoty1, ssnd(jps_ocyw)%clgrid, -1. ) 2154 ! 2155 ! 2156 IF( TRIM( sn_snd_crtw%clvor ) == 'eastward-northward' ) THEN ! Rotation of the components 2157 ! ! Ocean component 2158 CALL rot_rep( zotx1, zoty1, ssnd(jps_ocxw)%clgrid, 'ij->e', ztmp1 ) ! 1st component 2159 CALL rot_rep( zotx1, zoty1, ssnd(jps_ocxw)%clgrid, 'ij->n', ztmp2 ) ! 2nd component 2160 zotx1(:,:) = ztmp1(:,:) ! overwrite the components 2161 zoty1(:,:) = ztmp2(:,:) 2162 IF( ssnd(jps_ivx1)%laction ) THEN ! Ice component 2163 CALL rot_rep( zitx1, zity1, ssnd(jps_ivx1)%clgrid, 'ij->e', ztmp1 ) ! 1st component 2164 CALL rot_rep( zitx1, zity1, ssnd(jps_ivx1)%clgrid, 'ij->n', ztmp2 ) ! 2nd component 2165 zitx1(:,:) = ztmp1(:,:) ! overwrite the components 2166 zity1(:,:) = ztmp2(:,:) 2167 ENDIF 2168 ENDIF 2169 ! 2170 ! ! spherical coordinates to cartesian -> 2 components to 3 components 2171 ! IF( TRIM( sn_snd_crtw%clvref ) == 'cartesian' ) THEN 2172 ! ztmp1(:,:) = zotx1(:,:) ! ocean currents 2173 ! ztmp2(:,:) = zoty1(:,:) 2174 ! CALL oce2geo ( ztmp1, ztmp2, 'T', zotx1, zoty1, zotz1 ) 2175 ! ! 2176 ! IF( ssnd(jps_ivx1)%laction ) THEN ! ice velocities 2177 ! ztmp1(:,:) = zitx1(:,:) 2178 ! ztmp1(:,:) = zity1(:,:) 2179 ! CALL oce2geo ( ztmp1, ztmp2, 'T', zitx1, zity1, zitz1 ) 2180 ! ENDIF 2181 ! ENDIF 2182 ! 2060 2183 IF( ssnd(jps_ocxw)%laction ) CALL cpl_snd( jps_ocxw, isec, RESHAPE ( zotx1, (/jpi,jpj,1/) ), info ) ! ocean x current 1st grid 2061 2184 IF( ssnd(jps_ocyw)%laction ) CALL cpl_snd( jps_ocyw, isec, RESHAPE ( zoty1, (/jpi,jpj,1/) ), info ) ! ocean y current 1st grid
Note: See TracChangeset
for help on using the changeset viewer.