- Timestamp:
- 2016-06-28T11:53:56+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r6489 r6748 59 59 ! 60 60 ! !* surface T-, U-, V- ocean level variables (T, S, depth, velocity) 61 !$OMP PARALLEL DO schedule(static) private(jj, ji) 61 62 DO jj = 1, jpj 62 63 DO ji = 1, jpi … … 68 69 IF( nn_fsbc == 1 ) THEN ! Instantaneous surface fields ! 69 70 ! ! ---------------------------------------- ! 71 !$OMP PARALLEL WORKSHARE 70 72 ssu_m(:,:) = ub(:,:,1) 71 73 ssv_m(:,:) = vb(:,:,1) 74 !$OMP END PARALLEL WORKSHARE 72 75 IF( l_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 73 76 ELSE ; sst_m(:,:) = zts(:,:,jp_tem) 74 77 ENDIF 78 !$OMP PARALLEL WORKSHARE 75 79 sss_m(:,:) = zts(:,:,jp_sal) 80 !$OMP END PARALLEL WORKSHARE 76 81 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 77 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 78 ELSE ; ssh_m(:,:) = sshn(:,:) 79 ENDIF 80 ! 82 IF( ln_apr_dyn ) THEN 83 !$OMP PARALLEL WORKSHARE 84 ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 85 !$OMP END PARALLEL WORKSHARE 86 ELSE 87 !$OMP PARALLEL WORKSHARE 88 ssh_m(:,:) = sshn(:,:) 89 !$OMP END PARALLEL WORKSHARE 90 ENDIF 91 ! 92 !$OMP PARALLEL WORKSHARE 81 93 e3t_m(:,:) = e3t_n(:,:,1) 82 94 ! 83 95 frq_m(:,:) = fraqsr_1lev(:,:) 96 !$OMP END PARALLEL WORKSHARE 84 97 ! 85 98 ELSE … … 90 103 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields initialised to instantaneous values' 91 104 zcoef = REAL( nn_fsbc - 1, wp ) 105 !$OMP PARALLEL WORKSHARE 92 106 ssu_m(:,:) = zcoef * ub(:,:,1) 93 107 ssv_m(:,:) = zcoef * vb(:,:,1) 108 !$OMP END PARALLEL WORKSHARE 94 109 IF( l_useCT ) THEN ; sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 95 110 ELSE ; sst_m(:,:) = zcoef * zts(:,:,jp_tem) 96 111 ENDIF 112 !$OMP PARALLEL WORKSHARE 97 113 sss_m(:,:) = zcoef * zts(:,:,jp_sal) 114 !$OMP END PARALLEL WORKSHARE 98 115 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 99 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 100 ELSE ; ssh_m(:,:) = zcoef * sshn(:,:) 116 IF( ln_apr_dyn ) THEN 117 !$OMP PARALLEL WORKSHARE 118 ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 119 !$OMP END PARALLEL WORKSHARE 120 ELSE 121 !$OMP PARALLEL WORKSHARE 122 ssh_m(:,:) = zcoef * sshn(:,:) 123 !$OMP END PARALLEL WORKSHARE 101 124 ENDIF 102 125 ! 126 !$OMP PARALLEL WORKSHARE 103 127 e3t_m(:,:) = zcoef * e3t_n(:,:,1) 104 128 ! 105 129 frq_m(:,:) = zcoef * fraqsr_1lev(:,:) 130 !$OMP END PARALLEL WORKSHARE 106 131 ! ! ---------------------------------------- ! 107 132 ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN ! Initialisation: New mean computation ! 108 133 ! ! ---------------------------------------- ! 134 !$OMP PARALLEL WORKSHARE 109 135 ssu_m(:,:) = 0._wp ! reset to zero ocean mean sbc fields 110 136 ssv_m(:,:) = 0._wp … … 114 140 e3t_m(:,:) = 0._wp 115 141 frq_m(:,:) = 0._wp 142 !$OMP END PARALLEL WORKSHARE 116 143 ENDIF 117 144 ! ! ---------------------------------------- ! 118 145 ! ! Cumulate at each time step ! 119 146 ! ! ---------------------------------------- ! 147 !$OMP PARALLEL WORKSHARE 120 148 ssu_m(:,:) = ssu_m(:,:) + ub(:,:,1) 121 149 ssv_m(:,:) = ssv_m(:,:) + vb(:,:,1) 150 !$OMP END PARALLEL WORKSHARE 122 151 IF( l_useCT ) THEN ; sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 123 152 ELSE ; sst_m(:,:) = sst_m(:,:) + zts(:,:,jp_tem) 124 153 ENDIF 154 !$OMP PARALLEL WORKSHARE 125 155 sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 156 !$OMP END PARALLEL WORKSHARE 126 157 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 127 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 128 ELSE ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 129 ENDIF 130 ! 158 IF( ln_apr_dyn ) THEN 159 !$OMP PARALLEL WORKSHARE 160 ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 161 !$OMP END PARALLEL WORKSHARE 162 ELSE 163 !$OMP PARALLEL WORKSHARE 164 ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 165 !$OMP END PARALLEL WORKSHARE 166 ENDIF 167 ! 168 !$OMP PARALLEL WORKSHARE 131 169 e3t_m(:,:) = e3t_m(:,:) + e3t_n(:,:,1) 132 170 ! 133 171 frq_m(:,:) = frq_m(:,:) + fraqsr_1lev(:,:) 172 !$OMP END PARALLEL WORKSHARE 134 173 135 174 ! ! ---------------------------------------- ! … … 137 176 ! ! ---------------------------------------- ! 138 177 zcoef = 1. / REAL( nn_fsbc, wp ) 178 !$OMP PARALLEL WORKSHARE 139 179 sst_m(:,:) = sst_m(:,:) * zcoef ! mean SST [Celcius] 140 180 sss_m(:,:) = sss_m(:,:) * zcoef ! mean SSS [psu] … … 144 184 e3t_m(:,:) = e3t_m(:,:) * zcoef ! mean vertical scale factor [m] 145 185 frq_m(:,:) = frq_m(:,:) * zcoef ! mean fraction of solar net radiation absorbed in the 1st T level [-] 186 !$OMP END PARALLEL WORKSHARE 146 187 ! 147 188 ENDIF … … 223 264 & 'from ', zf_sbc, ' to ', nn_fsbc 224 265 zcoef = REAL( nn_fsbc - 1, wp ) / zf_sbc 266 !$OMP PARALLEL WORKSHARE 225 267 ssu_m(:,:) = zcoef * ssu_m(:,:) 226 268 ssv_m(:,:) = zcoef * ssv_m(:,:) … … 230 272 e3t_m(:,:) = zcoef * e3t_m(:,:) 231 273 frq_m(:,:) = zcoef * frq_m(:,:) 274 !$OMP END PARALLEL WORKSHARE 232 275 ELSE 233 276 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields read in the ocean restart file' … … 239 282 ! 240 283 IF(lwp) WRITE(numout,*) ' default initialisation of ss?_m arrays' 284 !$OMP PARALLEL WORKSHARE 241 285 ssu_m(:,:) = ub(:,:,1) 242 286 ssv_m(:,:) = vb(:,:,1) 287 !$OMP END PARALLEL WORKSHARE 243 288 IF( l_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 244 289 ELSE ; sst_m(:,:) = tsn(:,:,1,jp_tem) 245 290 ENDIF 291 !$OMP PARALLEL WORKSHARE 246 292 sss_m(:,:) = tsn (:,:,1,jp_sal) 247 293 ssh_m(:,:) = sshn (:,:) 248 294 e3t_m(:,:) = e3t_n(:,:,1) 249 295 frq_m(:,:) = 1._wp 296 !$OMP END PARALLEL WORKSHARE 250 297 ! 251 298 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.