Changeset 7753 for trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
- Timestamp:
- 2017-03-03T12:46:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r7698 r7753 59 59 ! 60 60 ! !* surface T-, U-, V- ocean level variables (T, S, depth, velocity) 61 !$OMP PARALLEL DO schedule(static) private(jj, ji)62 61 DO jj = 1, jpj 63 62 DO ji = 1, jpi … … 69 68 IF( nn_fsbc == 1 ) THEN ! Instantaneous surface fields ! 70 69 ! ! ---------------------------------------- ! 71 !$OMP PARALLEL DO schedule(static) private(jj, ji) 72 DO jj = 1, jpj 73 DO ji = 1, jpi 74 ssu_m(ji,jj) = ub(ji,jj,1) 75 ssv_m(ji,jj) = vb(ji,jj,1) 76 END DO 77 END DO 78 IF( l_useCT ) THEN 79 sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 80 ELSE 81 !$OMP PARALLEL DO schedule(static) private(jj, ji) 82 DO jj = 1, jpj 83 DO ji = 1, jpi 84 sst_m(ji,jj) = zts(ji,jj,jp_tem) 85 END DO 86 END DO 87 ENDIF 88 !$OMP PARALLEL DO schedule(static) private(jj, ji) 89 DO jj = 1, jpj 90 DO ji = 1, jpi 91 sss_m(ji,jj) = zts(ji,jj,jp_sal) 92 END DO 93 END DO 70 ssu_m(:,:) = ub(:,:,1) 71 ssv_m(:,:) = vb(:,:,1) 72 IF( l_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 73 ELSE ; sst_m(:,:) = zts(:,:,jp_tem) 74 ENDIF 75 sss_m(:,:) = zts(:,:,jp_sal) 94 76 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 95 IF( ln_apr_dyn ) THEN 96 !$OMP PARALLEL DO schedule(static) private(jj, ji) 97 DO jj = 1, jpj 98 DO ji = 1, jpi 99 ssh_m(ji,jj) = sshn(ji,jj) - 0.5 * ( ssh_ib(ji,jj) + ssh_ibb(ji,jj) ) 100 END DO 101 END DO 102 ELSE 103 !$OMP PARALLEL DO schedule(static) private(jj, ji) 104 DO jj = 1, jpj 105 DO ji = 1, jpi 106 ssh_m(ji,jj) = sshn(ji,jj) 107 END DO 108 END DO 109 ENDIF 110 ! 111 !$OMP PARALLEL DO schedule(static) private(jj, ji) 112 DO jj = 1, jpj 113 DO ji = 1, jpi 114 e3t_m(ji,jj) = e3t_n(ji,jj,1) 115 ! 116 frq_m(ji,jj) = fraqsr_1lev(ji,jj) 117 END DO 118 END DO 77 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 78 ELSE ; ssh_m(:,:) = sshn(:,:) 79 ENDIF 80 ! 81 e3t_m(:,:) = e3t_n(:,:,1) 82 ! 83 frq_m(:,:) = fraqsr_1lev(:,:) 119 84 ! 120 85 ELSE … … 126 91 IF(lwp) WRITE(numout,*) '~~~~~~~ ' 127 92 zcoef = REAL( nn_fsbc - 1, wp ) 128 !$OMP PARALLEL DO schedule(static) private(jj, ji) 129 DO jj = 1, jpj 130 DO ji = 1, jpi 131 ssu_m(ji,jj) = zcoef * ub(ji,jj,1) 132 ssv_m(ji,jj) = zcoef * vb(ji,jj,1) 133 END DO 134 END DO 135 IF( l_useCT ) THEN 136 sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 137 ELSE 138 !$OMP PARALLEL DO schedule(static) private(jj, ji) 139 DO jj = 1, jpj 140 DO ji = 1, jpi 141 sst_m(ji,jj) = zcoef * zts(ji,jj,jp_tem) 142 END DO 143 END DO 144 ENDIF 145 !$OMP PARALLEL DO schedule(static) private(jj, ji) 146 DO jj = 1, jpj 147 DO ji = 1, jpi 148 sss_m(ji,jj) = zcoef * zts(ji,jj,jp_sal) 149 END DO 150 END DO 93 ssu_m(:,:) = zcoef * ub(:,:,1) 94 ssv_m(:,:) = zcoef * vb(:,:,1) 95 IF( l_useCT ) THEN ; sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 96 ELSE ; sst_m(:,:) = zcoef * zts(:,:,jp_tem) 97 ENDIF 98 sss_m(:,:) = zcoef * zts(:,:,jp_sal) 151 99 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 152 IF( ln_apr_dyn ) THEN 153 !$OMP PARALLEL DO schedule(static) private(jj, ji) 154 DO jj = 1, jpj 155 DO ji = 1, jpi 156 ssh_m(ji,jj) = zcoef * ( sshn(ji,jj) - 0.5 * ( ssh_ib(ji,jj) + ssh_ibb(ji,jj) ) ) 157 END DO 158 END DO 159 ELSE 160 !$OMP PARALLEL DO schedule(static) private(jj, ji) 161 DO jj = 1, jpj 162 DO ji = 1, jpi 163 ssh_m(ji,jj) = zcoef * sshn(ji,jj) 164 END DO 165 END DO 166 ENDIF 167 ! 168 !$OMP PARALLEL DO schedule(static) private(jj, ji) 169 DO jj = 1, jpj 170 DO ji = 1, jpi 171 e3t_m(ji,jj) = zcoef * e3t_n(ji,jj,1) 172 ! 173 frq_m(ji,jj) = zcoef * fraqsr_1lev(ji,jj) 174 END DO 175 END DO 100 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 101 ELSE ; ssh_m(:,:) = zcoef * sshn(:,:) 102 ENDIF 103 ! 104 e3t_m(:,:) = zcoef * e3t_n(:,:,1) 105 ! 106 frq_m(:,:) = zcoef * fraqsr_1lev(:,:) 176 107 ! ! ---------------------------------------- ! 177 108 ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN ! Initialisation: New mean computation ! 178 109 ! ! ---------------------------------------- ! 179 !$OMP PARALLEL DO schedule(static) private(jj, ji) 180 DO jj = 1, jpj 181 DO ji = 1, jpi 182 ssu_m(ji,jj) = 0._wp ! reset to zero ocean mean sbc fields 183 ssv_m(ji,jj) = 0._wp 184 sst_m(ji,jj) = 0._wp 185 sss_m(ji,jj) = 0._wp 186 ssh_m(ji,jj) = 0._wp 187 e3t_m(ji,jj) = 0._wp 188 frq_m(ji,jj) = 0._wp 189 END DO 190 END DO 110 ssu_m(:,:) = 0._wp ! reset to zero ocean mean sbc fields 111 ssv_m(:,:) = 0._wp 112 sst_m(:,:) = 0._wp 113 sss_m(:,:) = 0._wp 114 ssh_m(:,:) = 0._wp 115 e3t_m(:,:) = 0._wp 116 frq_m(:,:) = 0._wp 191 117 ENDIF 192 118 ! ! ---------------------------------------- ! 193 119 ! ! Cumulate at each time step ! 194 120 ! ! ---------------------------------------- ! 195 !$OMP PARALLEL DO schedule(static) private(jj, ji) 196 DO jj = 1, jpj 197 DO ji = 1, jpi 198 ssu_m(ji,jj) = ssu_m(ji,jj) + ub(ji,jj,1) 199 ssv_m(ji,jj) = ssv_m(ji,jj) + vb(ji,jj,1) 200 END DO 201 END DO 202 IF( l_useCT ) THEN 203 sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 204 ELSE 205 !$OMP PARALLEL DO schedule(static) private(jj, ji) 206 DO jj = 1, jpj 207 DO ji = 1, jpi 208 sst_m(ji,jj) = sst_m(ji,jj) + zts(ji,jj,jp_tem) 209 END DO 210 END DO 211 ENDIF 212 !$OMP PARALLEL DO schedule(static) private(jj, ji) 213 DO jj = 1, jpj 214 DO ji = 1, jpi 215 sss_m(ji,jj) = sss_m(ji,jj) + zts(ji,jj,jp_sal) 216 END DO 217 END DO 121 ssu_m(:,:) = ssu_m(:,:) + ub(:,:,1) 122 ssv_m(:,:) = ssv_m(:,:) + vb(:,:,1) 123 IF( l_useCT ) THEN ; sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 124 ELSE ; sst_m(:,:) = sst_m(:,:) + zts(:,:,jp_tem) 125 ENDIF 126 sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 218 127 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 219 IF( ln_apr_dyn ) THEN 220 !$OMP PARALLEL DO schedule(static) private(jj, ji) 221 DO jj = 1, jpj 222 DO ji = 1, jpi 223 ssh_m(ji,jj) = ssh_m(ji,jj) + sshn(ji,jj) - 0.5 * ( ssh_ib(ji,jj) + ssh_ibb(ji,jj) ) 224 END DO 225 END DO 226 ELSE 227 !$OMP PARALLEL DO schedule(static) private(jj, ji) 228 DO jj = 1, jpj 229 DO ji = 1, jpi 230 ssh_m(ji,jj) = ssh_m(ji,jj) + sshn(ji,jj) 231 END DO 232 END DO 233 ENDIF 234 ! 235 !$OMP PARALLEL DO schedule(static) private(jj, ji) 236 DO jj = 1, jpj 237 DO ji = 1, jpi 238 e3t_m(ji,jj) = e3t_m(ji,jj) + e3t_n(ji,jj,1) 239 ! 240 frq_m(ji,jj) = frq_m(ji,jj) + fraqsr_1lev(ji,jj) 241 END DO 242 END DO 128 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 129 ELSE ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 130 ENDIF 131 ! 132 e3t_m(:,:) = e3t_m(:,:) + e3t_n(:,:,1) 133 ! 134 frq_m(:,:) = frq_m(:,:) + fraqsr_1lev(:,:) 243 135 244 136 ! ! ---------------------------------------- ! … … 246 138 ! ! ---------------------------------------- ! 247 139 zcoef = 1. / REAL( nn_fsbc, wp ) 248 !$OMP PARALLEL DO schedule(static) private(jj, ji) 249 DO jj = 1, jpj 250 DO ji = 1, jpi 251 sst_m(ji,jj) = sst_m(ji,jj) * zcoef ! mean SST [Celsius] 252 sss_m(ji,jj) = sss_m(ji,jj) * zcoef ! mean SSS [psu] 253 ssu_m(ji,jj) = ssu_m(ji,jj) * zcoef ! mean suface current [m/s] 254 ssv_m(ji,jj) = ssv_m(ji,jj) * zcoef ! 255 ssh_m(ji,jj) = ssh_m(ji,jj) * zcoef ! mean SSH [m] 256 e3t_m(ji,jj) = e3t_m(ji,jj) * zcoef ! mean vertical scale factor [m] 257 frq_m(ji,jj) = frq_m(ji,jj) * zcoef ! mean fraction of solar net radiation absorbed in the 1st T level [-] 258 END DO 259 END DO 140 sst_m(:,:) = sst_m(:,:) * zcoef ! mean SST [Celsius] 141 sss_m(:,:) = sss_m(:,:) * zcoef ! mean SSS [psu] 142 ssu_m(:,:) = ssu_m(:,:) * zcoef ! mean suface current [m/s] 143 ssv_m(:,:) = ssv_m(:,:) * zcoef ! 144 ssh_m(:,:) = ssh_m(:,:) * zcoef ! mean SSH [m] 145 e3t_m(:,:) = e3t_m(:,:) * zcoef ! mean vertical scale factor [m] 146 frq_m(:,:) = frq_m(:,:) * zcoef ! mean fraction of solar net radiation absorbed in the 1st T level [-] 260 147 ! 261 148 ENDIF … … 303 190 !!---------------------------------------------------------------------- 304 191 REAL(wp) :: zcoef, zf_sbc ! local scalar 305 INTEGER :: ji, jj ! loop index306 192 !!---------------------------------------------------------------------- 307 193 ! … … 331 217 CALL iom_get( numror, jpdom_autoglo, 'frq_m' , frq_m ) 332 218 ELSE 333 !$OMP PARALLEL DO schedule(static) private(jj, ji) 334 DO jj = 1, jpj 335 DO ji = 1, jpi 336 frq_m(ji,jj) = 1._wp ! default definition 337 END DO 338 END DO 219 frq_m(:,:) = 1._wp ! default definition 339 220 ENDIF 340 221 ! … … 342 223 IF(lwp) WRITE(numout,*) ' restart with a change in the frequency of mean from ', zf_sbc, ' to ', nn_fsbc 343 224 zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc 344 !$OMP PARALLEL DO schedule(static) private(jj, ji) 345 DO jj = 1, jpj 346 DO ji = 1, jpi 347 ssu_m(ji,jj) = zcoef * ssu_m(ji,jj) 348 ssv_m(ji,jj) = zcoef * ssv_m(ji,jj) 349 sst_m(ji,jj) = zcoef * sst_m(ji,jj) 350 sss_m(ji,jj) = zcoef * sss_m(ji,jj) 351 ssh_m(ji,jj) = zcoef * ssh_m(ji,jj) 352 e3t_m(ji,jj) = zcoef * e3t_m(ji,jj) 353 frq_m(ji,jj) = zcoef * frq_m(ji,jj) 354 END DO 355 END DO 225 ssu_m(:,:) = zcoef * ssu_m(:,:) 226 ssv_m(:,:) = zcoef * ssv_m(:,:) 227 sst_m(:,:) = zcoef * sst_m(:,:) 228 sss_m(:,:) = zcoef * sss_m(:,:) 229 ssh_m(:,:) = zcoef * ssh_m(:,:) 230 e3t_m(:,:) = zcoef * e3t_m(:,:) 231 frq_m(:,:) = zcoef * frq_m(:,:) 356 232 ELSE 357 233 IF(lwp) WRITE(numout,*) ' mean fields read in the ocean restart file' … … 363 239 ! 364 240 IF(lwp) WRITE(numout,*) ' default initialisation of ss._m arrays' 365 !$OMP PARALLEL DO schedule(static) private(jj, ji) 366 DO jj = 1, jpj 367 DO ji = 1, jpi 368 ssu_m(ji,jj) = ub(ji,jj,1) 369 ssv_m(ji,jj) = vb(ji,jj,1) 370 END DO 371 END DO 241 ssu_m(:,:) = ub(:,:,1) 242 ssv_m(:,:) = vb(:,:,1) 372 243 IF( l_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 373 244 ELSE ; sst_m(:,:) = tsn(:,:,1,jp_tem) 374 245 ENDIF 375 !$OMP PARALLEL DO schedule(static) private(jj, ji) 376 DO jj = 1, jpj 377 DO ji = 1, jpi 378 sss_m(ji,jj) = tsn (ji,jj,1,jp_sal) 379 ssh_m(ji,jj) = sshn (ji,jj) 380 e3t_m(ji,jj) = e3t_n(ji,jj,1) 381 frq_m(ji,jj) = 1._wp 382 END DO 383 END DO 246 sss_m(:,:) = tsn (:,:,1,jp_sal) 247 ssh_m(:,:) = sshn (:,:) 248 e3t_m(:,:) = e3t_n(:,:,1) 249 frq_m(:,:) = 1._wp 384 250 ! 385 251 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.