[888] | 1 | MODULE sbcssm |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE sbcssm *** |
---|
| 4 | !! Surface module : provide time-mean ocean surface variables |
---|
| 5 | !!====================================================================== |
---|
[2715] | 6 | !! History : 9.0 ! 2006-07 (G. Madec) Original code |
---|
[2528] | 7 | !! 3.3 ! 2010-10 (C. Bricaud, G. Madec) add the Patm forcing for sea-ice |
---|
[6140] | 8 | !! 3.7 ! 2015-11 (G. Madec) non linear free surface by default: e3t_m always computed |
---|
[888] | 9 | !!---------------------------------------------------------------------- |
---|
| 10 | |
---|
| 11 | !!---------------------------------------------------------------------- |
---|
[6140] | 12 | !! sbc_ssm : calculate sea surface mean currents, temperature, |
---|
| 13 | !! and salinity over nn_fsbc time-step |
---|
[888] | 14 | !!---------------------------------------------------------------------- |
---|
[6140] | 15 | USE oce ! ocean dynamics and tracers |
---|
| 16 | USE dom_oce ! ocean space and time domain |
---|
| 17 | USE sbc_oce ! surface boundary condition: ocean fields |
---|
| 18 | USE sbcapr ! surface boundary condition: atmospheric pressure |
---|
| 19 | USE eosbn2 ! equation of state and related derivatives |
---|
[4990] | 20 | ! |
---|
[6140] | 21 | USE in_out_manager ! I/O manager |
---|
| 22 | USE prtctl ! Print control |
---|
| 23 | USE iom ! IOM library |
---|
[888] | 24 | |
---|
| 25 | IMPLICIT NONE |
---|
| 26 | PRIVATE |
---|
| 27 | |
---|
[6140] | 28 | PUBLIC sbc_ssm ! routine called by step.F90 |
---|
| 29 | PUBLIC sbc_ssm_init ! routine called by sbcmod.F90 |
---|
[4292] | 30 | |
---|
[6140] | 31 | LOGICAL, SAVE :: l_ssm_mean = .FALSE. ! keep track of whether means have been read from restart file |
---|
[4292] | 32 | |
---|
[888] | 33 | !!---------------------------------------------------------------------- |
---|
[2528] | 34 | !! NEMO/OPA 3.3 , NEMO Consortium (2010) |
---|
[1156] | 35 | !! $Id$ |
---|
[2715] | 36 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
[888] | 37 | !!---------------------------------------------------------------------- |
---|
| 38 | CONTAINS |
---|
| 39 | |
---|
| 40 | SUBROUTINE sbc_ssm( kt ) |
---|
| 41 | !!--------------------------------------------------------------------- |
---|
| 42 | !! *** ROUTINE sbc_oce *** |
---|
| 43 | !! |
---|
| 44 | !! ** Purpose : provide ocean surface variable to sea-surface boundary |
---|
| 45 | !! condition computation |
---|
| 46 | !! |
---|
| 47 | !! ** Method : compute mean surface velocity (2 components at U and |
---|
[7646] | 48 | !! V-points) [m/s], temperature [Celsius] and salinity [psu] over |
---|
[888] | 49 | !! the periode (kt - nn_fsbc) to kt |
---|
[2528] | 50 | !! Note that the inverse barometer ssh (i.e. ssh associated with Patm) |
---|
| 51 | !! is add to ssh_m when ln_apr_dyn = T. Required for sea-ice dynamics. |
---|
[888] | 52 | !!--------------------------------------------------------------------- |
---|
[2715] | 53 | INTEGER, INTENT(in) :: kt ! ocean time step |
---|
[888] | 54 | ! |
---|
[4990] | 55 | INTEGER :: ji, jj ! loop index |
---|
[2715] | 56 | REAL(wp) :: zcoef, zf_sbc ! local scalar |
---|
[4990] | 57 | REAL(wp), DIMENSION(jpi,jpj,jpts) :: zts |
---|
[888] | 58 | !!--------------------------------------------------------------------- |
---|
[6140] | 59 | ! |
---|
[5120] | 60 | ! !* surface T-, U-, V- ocean level variables (T, S, depth, velocity) |
---|
[7698] | 61 | !$OMP PARALLEL DO schedule(static) private(jj, ji) |
---|
[4990] | 62 | DO jj = 1, jpj |
---|
| 63 | DO ji = 1, jpi |
---|
| 64 | zts(ji,jj,jp_tem) = tsn(ji,jj,mikt(ji,jj),jp_tem) |
---|
| 65 | zts(ji,jj,jp_sal) = tsn(ji,jj,mikt(ji,jj),jp_sal) |
---|
| 66 | END DO |
---|
| 67 | END DO |
---|
| 68 | ! |
---|
[3607] | 69 | IF( nn_fsbc == 1 ) THEN ! Instantaneous surface fields ! |
---|
[888] | 70 | ! ! ---------------------------------------- ! |
---|
[7698] | 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 |
---|
[4990] | 87 | ENDIF |
---|
[7698] | 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 |
---|
[2528] | 94 | ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) |
---|
[7698] | 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 |
---|
[2528] | 109 | ENDIF |
---|
[888] | 110 | ! |
---|
[7698] | 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) |
---|
[4292] | 115 | ! |
---|
[7698] | 116 | frq_m(ji,jj) = fraqsr_1lev(ji,jj) |
---|
| 117 | END DO |
---|
| 118 | END DO |
---|
[5407] | 119 | ! |
---|
[888] | 120 | ELSE |
---|
[3607] | 121 | ! ! ----------------------------------------------- ! |
---|
[3614] | 122 | IF( kt == nit000 .AND. .NOT. l_ssm_mean ) THEN ! Initialisation: 1st time-step, no input means ! |
---|
[3607] | 123 | ! ! ----------------------------------------------- ! |
---|
[888] | 124 | IF(lwp) WRITE(numout,*) |
---|
[7646] | 125 | IF(lwp) WRITE(numout,*) 'sbc_ssm : mean fields initialised to instantaneous values' |
---|
| 126 | IF(lwp) WRITE(numout,*) '~~~~~~~ ' |
---|
[3607] | 127 | zcoef = REAL( nn_fsbc - 1, wp ) |
---|
[7698] | 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 |
---|
[4990] | 144 | ENDIF |
---|
[7698] | 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 |
---|
[4990] | 151 | ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) |
---|
[7698] | 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 |
---|
[888] | 166 | ENDIF |
---|
[4990] | 167 | ! |
---|
[7698] | 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 |
---|
[888] | 176 | ! ! ---------------------------------------- ! |
---|
| 177 | ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN ! Initialisation: New mean computation ! |
---|
| 178 | ! ! ---------------------------------------- ! |
---|
[7698] | 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 |
---|
[888] | 191 | ENDIF |
---|
| 192 | ! ! ---------------------------------------- ! |
---|
| 193 | ! ! Cumulate at each time step ! |
---|
| 194 | ! ! ---------------------------------------- ! |
---|
[7698] | 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 |
---|
[4990] | 211 | ENDIF |
---|
[7698] | 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 |
---|
[2528] | 218 | ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) |
---|
[7698] | 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 |
---|
[2528] | 233 | ENDIF |
---|
[4990] | 234 | ! |
---|
[7698] | 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 |
---|
[888] | 243 | |
---|
| 244 | ! ! ---------------------------------------- ! |
---|
| 245 | IF( MOD( kt - 1 , nn_fsbc ) == 0 ) THEN ! Mean value at each nn_fsbc time-step ! |
---|
| 246 | ! ! ---------------------------------------- ! |
---|
| 247 | zcoef = 1. / REAL( nn_fsbc, wp ) |
---|
[7698] | 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 |
---|
[888] | 260 | ! |
---|
| 261 | ENDIF |
---|
| 262 | ! ! ---------------------------------------- ! |
---|
| 263 | IF( lrst_oce ) THEN ! Write in the ocean restart file ! |
---|
| 264 | ! ! ---------------------------------------- ! |
---|
| 265 | IF(lwp) WRITE(numout,*) |
---|
| 266 | IF(lwp) WRITE(numout,*) 'sbc_ssm : sea surface mean fields written in ocean restart file ', & |
---|
| 267 | & 'at it= ', kt,' date= ', ndastp |
---|
| 268 | IF(lwp) WRITE(numout,*) '~~~~~~~' |
---|
| 269 | zf_sbc = REAL( nn_fsbc, wp ) |
---|
| 270 | CALL iom_rstput( kt, nitrst, numrow, 'nn_fsbc', zf_sbc ) ! sbc frequency |
---|
| 271 | CALL iom_rstput( kt, nitrst, numrow, 'ssu_m' , ssu_m ) ! sea surface mean fields |
---|
| 272 | CALL iom_rstput( kt, nitrst, numrow, 'ssv_m' , ssv_m ) |
---|
| 273 | CALL iom_rstput( kt, nitrst, numrow, 'sst_m' , sst_m ) |
---|
| 274 | CALL iom_rstput( kt, nitrst, numrow, 'sss_m' , sss_m ) |
---|
[1244] | 275 | CALL iom_rstput( kt, nitrst, numrow, 'ssh_m' , ssh_m ) |
---|
[6140] | 276 | CALL iom_rstput( kt, nitrst, numrow, 'e3t_m' , e3t_m ) |
---|
[5407] | 277 | CALL iom_rstput( kt, nitrst, numrow, 'frq_m' , frq_m ) |
---|
[888] | 278 | ! |
---|
| 279 | ENDIF |
---|
| 280 | ! |
---|
| 281 | ENDIF |
---|
| 282 | ! |
---|
[5407] | 283 | IF( MOD( kt - 1 , nn_fsbc ) == 0 ) THEN ! Mean value at each nn_fsbc time-step ! |
---|
| 284 | CALL iom_put( 'ssu_m', ssu_m ) |
---|
| 285 | CALL iom_put( 'ssv_m', ssv_m ) |
---|
| 286 | CALL iom_put( 'sst_m', sst_m ) |
---|
| 287 | CALL iom_put( 'sss_m', sss_m ) |
---|
| 288 | CALL iom_put( 'ssh_m', ssh_m ) |
---|
[6140] | 289 | CALL iom_put( 'e3t_m', e3t_m ) |
---|
[5407] | 290 | CALL iom_put( 'frq_m', frq_m ) |
---|
| 291 | ENDIF |
---|
| 292 | ! |
---|
[888] | 293 | END SUBROUTINE sbc_ssm |
---|
| 294 | |
---|
[6140] | 295 | |
---|
[3607] | 296 | SUBROUTINE sbc_ssm_init |
---|
| 297 | !!---------------------------------------------------------------------- |
---|
| 298 | !! *** ROUTINE sbc_ssm_init *** |
---|
| 299 | !! |
---|
| 300 | !! ** Purpose : Initialisation of the sbc data |
---|
| 301 | !! |
---|
| 302 | !! ** Action : - read parameters |
---|
| 303 | !!---------------------------------------------------------------------- |
---|
[6140] | 304 | REAL(wp) :: zcoef, zf_sbc ! local scalar |
---|
[7698] | 305 | INTEGER :: ji, jj ! loop index |
---|
[3607] | 306 | !!---------------------------------------------------------------------- |
---|
[6140] | 307 | ! |
---|
[3607] | 308 | IF( nn_fsbc == 1 ) THEN |
---|
| 309 | ! |
---|
| 310 | IF(lwp) WRITE(numout,*) |
---|
[7646] | 311 | IF(lwp) WRITE(numout,*) 'sbc_ssm_init : sea surface mean fields, nn_fsbc=1 : instantaneous values' |
---|
| 312 | IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' |
---|
[3607] | 313 | ! |
---|
| 314 | ELSE |
---|
| 315 | ! |
---|
| 316 | IF(lwp) WRITE(numout,*) |
---|
[7646] | 317 | IF(lwp) WRITE(numout,*) 'sbc_ssm_init : sea surface mean fields' |
---|
| 318 | IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~ ' |
---|
[3607] | 319 | ! |
---|
| 320 | IF( ln_rstart .AND. iom_varid( numror, 'nn_fsbc', ldstop = .FALSE. ) > 0 ) THEN |
---|
| 321 | l_ssm_mean = .TRUE. |
---|
[6140] | 322 | CALL iom_get( numror , 'nn_fsbc', zf_sbc ) ! sbc frequency of previous run |
---|
| 323 | CALL iom_get( numror, jpdom_autoglo, 'ssu_m' , ssu_m ) ! sea surface mean velocity (U-point) |
---|
| 324 | CALL iom_get( numror, jpdom_autoglo, 'ssv_m' , ssv_m ) ! " " velocity (V-point) |
---|
| 325 | CALL iom_get( numror, jpdom_autoglo, 'sst_m' , sst_m ) ! " " temperature (T-point) |
---|
| 326 | CALL iom_get( numror, jpdom_autoglo, 'sss_m' , sss_m ) ! " " salinity (T-point) |
---|
| 327 | CALL iom_get( numror, jpdom_autoglo, 'ssh_m' , ssh_m ) ! " " height (T-point) |
---|
| 328 | CALL iom_get( numror, jpdom_autoglo, 'e3t_m' , e3t_m ) ! 1st level thickness (T-point) |
---|
[5407] | 329 | ! fraction of solar net radiation absorbed in 1st T level |
---|
| 330 | IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN |
---|
| 331 | CALL iom_get( numror, jpdom_autoglo, 'frq_m' , frq_m ) |
---|
| 332 | ELSE |
---|
[7698] | 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 |
---|
[5407] | 339 | ENDIF |
---|
[3607] | 340 | ! |
---|
| 341 | IF( zf_sbc /= REAL( nn_fsbc, wp ) ) THEN ! nn_fsbc has changed between 2 runs |
---|
[7646] | 342 | IF(lwp) WRITE(numout,*) ' restart with a change in the frequency of mean from ', zf_sbc, ' to ', nn_fsbc |
---|
[3607] | 343 | zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc |
---|
[7698] | 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 |
---|
[3607] | 356 | ELSE |
---|
[7646] | 357 | IF(lwp) WRITE(numout,*) ' mean fields read in the ocean restart file' |
---|
[3607] | 358 | ENDIF |
---|
| 359 | ENDIF |
---|
| 360 | ENDIF |
---|
| 361 | ! |
---|
[5407] | 362 | IF( .NOT. l_ssm_mean ) THEN ! default initialisation. needed by lim_istate |
---|
| 363 | ! |
---|
[7646] | 364 | IF(lwp) WRITE(numout,*) ' default initialisation of ss._m arrays' |
---|
[7698] | 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 |
---|
[6489] | 372 | IF( l_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) |
---|
[7646] | 373 | ELSE ; sst_m(:,:) = tsn(:,:,1,jp_tem) |
---|
[5407] | 374 | ENDIF |
---|
[7698] | 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 |
---|
[5407] | 384 | ! |
---|
| 385 | ENDIF |
---|
| 386 | ! |
---|
[3607] | 387 | END SUBROUTINE sbc_ssm_init |
---|
| 388 | |
---|
[888] | 389 | !!====================================================================== |
---|
| 390 | END MODULE sbcssm |
---|