- Timestamp:
- 2016-12-19T13:15:59+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r7037 r7508 64 64 !! ** Purpose : Initialization of the dynamics and tracer fields. 65 65 !!---------------------------------------------------------------------- 66 INTEGER :: ji, jj, jk ! dummy loop indices66 INTEGER :: ji, jj, jk, jp ! dummy loop indices 67 67 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace 68 68 !!---------------------------------------------------------------------- … … 78 78 IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data 79 79 80 !$OMP PARALLEL WORKSHARE 81 rhd (:,:,: ) = 0._wp ; rhop (:,:,: ) = 0._wp ! set one for all to 0 at level jpk 82 rn2b (:,:,: ) = 0._wp ; rn2 (:,:,: ) = 0._wp ! set one for all to 0 at levels 1 and jpk 83 tsa (:,:,:,:) = 0._wp ! set one for all to 0 at level jpk 84 rab_b(:,:,:,:) = 0._wp ; rab_n(:,:,:,:) = 0._wp ! set one for all to 0 at level jpk 85 !$OMP END PARALLEL WORKSHARE 80 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 81 DO jk = 1, jpk 82 DO jj = 1, jpj 83 DO ji = 1, jpi 84 rhd (ji,jj,jk ) = 0._wp ; rhop (ji,jj,jk ) = 0._wp ! set one for all to 0 at level jpk 85 rn2b (ji,jj,jk ) = 0._wp ; rn2 (ji,jj,jk ) = 0._wp ! set one for all to 0 at levels 1 and jpk 86 tsa (ji,jj,jk,:) = 0._wp ! set one for all to 0 at level jpk 87 rab_b(ji,jj,jk,:) = 0._wp ; rab_n(ji,jj,jk,:) = 0._wp ! set one for all to 0 at level jpk 88 END DO 89 END DO 90 END DO 86 91 87 92 IF( ln_rstart ) THEN ! Restart from a file … … 98 103 ! ! Initialization of ocean to zero 99 104 ! before fields ! now fields 100 !$OMP PARALLEL WORKSHARE 101 sshb (:,:) = 0._wp ; sshn (:,:) = 0._wp 102 ub (:,:,:) = 0._wp ; un (:,:,:) = 0._wp 103 vb (:,:,:) = 0._wp ; vn (:,:,:) = 0._wp 104 hdivn(:,:,:) = 0._wp 105 !$OMP END PARALLEL WORKSHARE 105 !$OMP PARALLEL 106 !$OMP DO schedule(static) private(jj, ji) 107 DO jj = 1, jpj 108 DO ji = 1, jpi 109 sshb (ji,jj) = 0._wp ; sshn (ji,jj) = 0._wp 110 END DO 111 END DO 112 !$OMP END DO NOWAIT 113 !$OMP DO schedule(static) private(jk, jj, ji) 114 DO jk = 1, jpk 115 DO jj = 1, jpj 116 DO ji = 1, jpi 117 ub (ji,jj,jk) = 0._wp ; un (ji,jj,jk) = 0._wp 118 vb (ji,jj,jk) = 0._wp ; vn (ji,jj,jk) = 0._wp 119 hdivn(ji,jj,jk) = 0._wp 120 END DO 121 END DO 122 END DO 123 !$OMP END PARALLEL 106 124 ! 107 125 IF( cp_cfg == 'eel' ) THEN … … 112 130 IF ( ln_tsd_init ) THEN ! read 3D T and S data at nit000 113 131 CALL dta_tsd( nit000, tsb ) 114 !$OMP PARALLEL WORKSHARE 115 tsn(:,:,:,:) = tsb(:,:,:,:) 116 !$OMP END PARALLEL WORKSHARE 132 !$OMP PARALLEL DO schedule(static) private(jp, jk, jj, ji) 133 DO jp = 1, jpts 134 DO jk = 1, jpk 135 DO jj = 1, jpj 136 DO ji = 1, jpi 137 tsn(ji,jj,jk,jp) = tsb(ji,jj,jk,jp) 138 END DO 139 END DO 140 END DO 141 END DO 117 142 ! 118 143 ELSE ! Initial T-S fields defined analytically … … 122 147 CALL wrk_alloc( jpi,jpj,jpk,2, zuvd ) 123 148 CALL dta_uvd( nit000, zuvd ) 124 !$OMP PARALLEL WORKSHARE 125 ub(:,:,:) = zuvd(:,:,:,1) ; un(:,:,:) = ub(:,:,:) 126 vb(:,:,:) = zuvd(:,:,:,2) ; vn(:,:,:) = vb(:,:,:) 127 !$OMP END PARALLEL WORKSHARE 149 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 150 DO jk = 1, jpk 151 DO jj = 1, jpj 152 DO ji = 1, jpi 153 ub(ji,jj,jk) = zuvd(ji,jj,jk,1) ; un(ji,jj,jk) = ub(ji,jj,jk) 154 vb(ji,jj,jk) = zuvd(ji,jj,jk,2) ; vn(ji,jj,jk) = vb(ji,jj,jk) 155 END DO 156 END DO 157 END DO 128 158 CALL wrk_dealloc( jpi,jpj,jpk,2, zuvd ) 129 159 ENDIF … … 146 176 ! 147 177 !$OMP PARALLEL 148 !$OMP WORKSHARE 149 un_b(:,:) = 0._wp ; vn_b(:,:) = 0._wp 150 ub_b(:,:) = 0._wp ; vb_b(:,:) = 0._wp 151 !$OMP END WORKSHARE 178 !$OMP DO schedule(static) private(jj, ji) 179 DO jj = 1, jpj 180 DO ji = 1, jpi 181 un_b(ji,jj) = 0._wp ; vn_b(ji,jj) = 0._wp 182 ub_b(ji,jj) = 0._wp ; vb_b(ji,jj) = 0._wp 183 END DO 184 END DO 152 185 ! 153 186 !!gm the use of umsak & vmask is not necessary belox as un, vn, ub, vb are always masked … … 165 198 END DO 166 199 ! 167 !$OMP WORKSHARE 168 un_b(:,:) = un_b(:,:) * r1_hu_n(:,:) 169 vn_b(:,:) = vn_b(:,:) * r1_hv_n(:,:) 170 ! 171 ub_b(:,:) = ub_b(:,:) * r1_hu_b(:,:) 172 vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 173 !$OMP END WORKSHARE NOWAIT 200 !$OMP DO schedule(static) private(jj, ji) 201 DO jj = 1, jpj 202 DO ji = 1, jpi 203 un_b(ji,jj) = un_b(ji,jj) * r1_hu_n(ji,jj) 204 vn_b(ji,jj) = vn_b(ji,jj) * r1_hv_n(ji,jj) 205 ! 206 ub_b(ji,jj) = ub_b(ji,jj) * r1_hu_b(ji,jj) 207 vb_b(ji,jj) = vb_b(ji,jj) * r1_hv_b(ji,jj) 208 END DO 209 END DO 174 210 !$OMP END PARALLEL 175 211 ! … … 406 442 CALL iom_close( inum ) 407 443 408 !$OMP PARALLEL WORKSHARE 409 tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) * tmask(:,:,:) 410 tsb(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) 411 !$OMP END PARALLEL WORKSHARE 444 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 445 DO jk = 1, jpk 446 DO jj = 1, jpj 447 DO ji = 1, jpi 448 tsn(ji,jj,jk,jp_tem) = tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 449 tsb(ji,jj,jk,jp_tem) = tsn(ji,jj,jk,jp_tem) 450 END DO 451 END DO 452 END DO 412 453 413 454 ! Read salinity field … … 417 458 CALL iom_close( inum ) 418 459 419 !$OMP PARALLEL WORKSHARE 420 tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) * tmask(:,:,:) 421 tsb(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) 422 !$OMP END PARALLEL WORKSHARE 460 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 461 DO jk = 1, jpk 462 DO jj = 1, jpj 463 DO ji = 1, jpi 464 tsn(ji,jj,jk,jp_sal) = tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 465 tsb(ji,jj,jk,jp_sal) = tsn(ji,jj,jk,jp_sal) 466 END DO 467 END DO 468 END DO 423 469 ! 424 470 END SELECT
Note: See TracChangeset
for help on using the changeset viewer.