Changeset 7753 for trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
- Timestamp:
- 2017-03-03T12:46:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r7698 r7753 59 59 !! ** Purpose : Initialization of the dynamics and tracer fields. 60 60 !!---------------------------------------------------------------------- 61 INTEGER :: ji, jj, jk , jn! dummy loop indices61 INTEGER :: ji, jj, jk ! dummy loop indices 62 62 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace 63 63 !!---------------------------------------------------------------------- … … 75 75 ! IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data 76 76 !!gm 77 !$OMP PARALLEL 78 DO jn = 1, jpts 79 !$OMP DO schedule(static) private(jk, jj, ji) 80 DO jk = 1, jpk 81 DO jj = 1, jpj 82 DO ji = 1, jpi 83 tsa (ji,jj,jk,jn) = 0._wp ! set one for all to 0 at level jpk 84 rab_b(ji,jj,jk,jn) = 0._wp ; rab_n(ji,jj,jk,jn) = 0._wp ! set one for all to 0 at level jpk 85 END DO 86 END DO 87 END DO 88 END DO 89 !$OMP DO schedule(static) private(jk, jj, ji) 90 DO jk = 1, jpk 91 DO jj = 1, jpj 92 DO ji = 1, jpi 93 rhd (ji,jj,jk ) = 0._wp ; rhop (ji,jj,jk ) = 0._wp ! set one for all to 0 at level jpk 94 rn2b (ji,jj,jk ) = 0._wp ; rn2 (ji,jj,jk ) = 0._wp ! set one for all to 0 at levels 1 and jpk 95 END DO 96 END DO 97 END DO 98 !$OMP END PARALLEL 77 78 rhd (:,:,: ) = 0._wp ; rhop (:,:,: ) = 0._wp ! set one for all to 0 at level jpk 79 rn2b (:,:,: ) = 0._wp ; rn2 (:,:,: ) = 0._wp ! set one for all to 0 at levels 1 and jpk 80 tsa (:,:,:,:) = 0._wp ! set one for all to 0 at level jpk 81 rab_b(:,:,:,:) = 0._wp ; rab_n(:,:,:,:) = 0._wp ! set one for all to 0 at level jpk 99 82 100 83 IF( ln_rstart ) THEN ! Restart from a file … … 114 97 CALL dta_tsd( nit000, tsb ) ! read 3D T and S data at nit000 115 98 ! 116 !$OMP PARALLEL 117 !$OMP DO schedule(static) private(jj, ji) 118 DO jj = 1, jpj 119 DO ji = 1, jpi 120 sshb (ji,jj) = 0._wp ! set the ocean at rest 121 END DO 122 END DO 123 !$OMP END DO NOWAIT 124 !$OMP DO schedule(static) private(jk, jj, ji) 125 DO jk = 1, jpk 126 DO jj = 1, jpj 127 DO ji = 1, jpi 128 ub (ji,jj,jk) = 0._wp 129 vb (ji,jj,jk) = 0._wp 130 END DO 131 END DO 132 END DO 133 !$OMP END PARALLEL 99 sshb(:,:) = 0._wp ! set the ocean at rest 100 ub (:,:,:) = 0._wp 101 vb (:,:,:) = 0._wp 134 102 ! 135 103 ELSE ! user defined initial T and S 136 104 CALL usr_def_istate( gdept_b, tmask, tsb, ub, vb, sshb ) 137 105 ENDIF 138 !$OMP PARALLEL 139 DO jn = 1, jpts 140 !$OMP DO schedule(static) private(jk, jj, ji) 141 DO jk = 1, jpk 142 DO jj = 1, jpj 143 DO ji = 1, jpi 144 tsn (ji,jj,jk,jn) = tsb (ji,jj,jk,jn) ! set now values from to before ones 145 END DO 146 END DO 147 END DO 148 END DO 149 !$OMP DO schedule(static) private(jk, jj, ji) 150 DO jk = 1, jpk 151 DO jj = 1, jpj 152 DO ji = 1, jpi 153 un (ji,jj,jk) = ub (ji,jj,jk) 154 vn (ji,jj,jk) = vb (ji,jj,jk) 155 END DO 156 END DO 157 END DO 158 !$OMP DO schedule(static) private(jj, ji) 159 DO jj = 1, jpj 160 DO ji = 1, jpi 161 sshn (ji,jj) = sshb(ji,jj) 162 hdivn(ji,jj,jpk) = 0._wp ! bottom divergence set one for 0 to zero at jpk level 163 END DO 164 END DO 165 !$OMP END PARALLEL 106 tsn (:,:,:,:) = tsb (:,:,:,:) ! set now values from to before ones 107 sshn (:,:) = sshb(:,:) 108 un (:,:,:) = ub (:,:,:) 109 vn (:,:,:) = vb (:,:,:) 110 hdivn(:,:,jpk) = 0._wp ! bottom divergence set one for 0 to zero at jpk level 166 111 CALL div_hor( 0 ) ! compute interior hdivn value 167 112 !!gm hdivn(:,:,:) = 0._wp … … 197 142 ! Do it whatever the free surface method, these arrays being eventually used 198 143 ! 199 !$OMP PARALLEL 200 !$OMP DO schedule(static) private(jj, ji) 201 DO jj = 1, jpj 202 DO ji = 1, jpi 203 un_b(ji,jj) = 0._wp ; vn_b(ji,jj) = 0._wp 204 ub_b(ji,jj) = 0._wp ; vb_b(ji,jj) = 0._wp 205 END DO 206 END DO 144 un_b(:,:) = 0._wp ; vn_b(:,:) = 0._wp 145 ub_b(:,:) = 0._wp ; vb_b(:,:) = 0._wp 207 146 ! 208 147 !!gm the use of umsak & vmask is not necessary below as un, vn, ub, vb are always masked 209 148 DO jk = 1, jpkm1 210 !$OMP DO schedule(static) private(jj, ji)211 149 DO jj = 1, jpj 212 150 DO ji = 1, jpi … … 220 158 END DO 221 159 ! 222 !$OMP DO schedule(static) private(jj, ji) 223 DO jj = 1, jpj 224 DO ji = 1, jpi 225 un_b(ji,jj) = un_b(ji,jj) * r1_hu_n(ji,jj) 226 vn_b(ji,jj) = vn_b(ji,jj) * r1_hv_n(ji,jj) 227 ! 228 ub_b(ji,jj) = ub_b(ji,jj) * r1_hu_b(ji,jj) 229 vb_b(ji,jj) = vb_b(ji,jj) * r1_hv_b(ji,jj) 230 END DO 231 END DO 232 !$OMP END PARALLEL 160 un_b(:,:) = un_b(:,:) * r1_hu_n(:,:) 161 vn_b(:,:) = vn_b(:,:) * r1_hv_n(:,:) 162 ! 163 ub_b(:,:) = ub_b(:,:) * r1_hu_b(:,:) 164 vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 233 165 ! 234 166 IF( nn_timing == 1 ) CALL timing_stop('istate_init')
Note: See TracChangeset
for help on using the changeset viewer.