- Timestamp:
- 2018-01-04T13:30:03+01:00 (6 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r6487 r9176 105 105 IF(lwp) WRITE(numout,*) '~~~~~~~ NOT optimal for auto-tasking case' 106 106 ENDIF 107 108 !! ===============107 ! 108 !$OMP PARALLEL DO ! =============== 109 109 DO jk = 1, jpkm1 ! Horizontal slab 110 110 ! ! =============== … … 287 287 ENDIF 288 288 289 !! ===============289 !$OMP PARALLEL DO ! =============== 290 290 DO jk = 1, jpkm1 ! Horizontal slab 291 291 ! ! =============== -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r6486 r9176 77 77 INTEGER :: ji, jj, jk ! dummy loop indices 78 78 REAL(wp) :: zua, zva, zbt, ze2u, ze2v ! temporary scalar 79 REAL(wp), POINTER, DIMENSION(:,:) :: zcu, zcv79 REAL(wp), DIMENSION(jpi,jpj ) :: zcu, zcv 80 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zuf, zut, zlu, zlv 81 81 !!---------------------------------------------------------------------- … … 83 83 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_bilap') 84 84 ! 85 85 ! CALL wrk_alloc( jpi, jpj, zcu, zcv ) 86 86 CALL wrk_alloc( jpi, jpj, jpk, zuf, zut, zlu, zlv ) 87 87 ! … … 102 102 zlv(:,:,:) = 0._wp 103 103 104 ! ! =============== 105 DO jk = 1, jpkm1 ! Horizontal slab 106 ! ! =============== 104 ! 107 105 ! Laplacian 108 106 ! --------- 109 107 110 108 IF( ln_sco .OR. ln_zps ) THEN ! s-coordinate or z-coordinate with partial steps 111 zuf(:,:,jk) = rotb(:,:,jk) * fse3f(:,:,jk) 112 DO jj = 2, jpjm1 113 DO ji = fs_2, fs_jpim1 ! vector opt. 114 zlu(ji,jj,jk) = - ( zuf(ji,jj,jk) - zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) & 115 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj,jk) ) / e1u(ji,jj) 116 117 zlv(ji,jj,jk) = + ( zuf(ji,jj,jk) - zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) & 118 & + ( hdivb(ji,jj+1,jk) - hdivb(ji,jj,jk) ) / e2v(ji,jj) 119 END DO 109 !$OMP PARALLEL DO 110 ! ! =============== 111 DO jk = 1, jpkm1 ! Horizontal slab 112 ! ! =============== 113 ! Laplacian 114 ! --------- 115 zuf(:,:,jk) = rotb(:,:,jk) * fse3f(:,:,jk) 116 DO jj = 2, jpjm1 117 DO ji = fs_2, fs_jpim1 ! vector opt. 118 zlu(ji,jj,jk) = - ( zuf(ji,jj,jk) - zuf(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) & 119 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj,jk) ) / e1u(ji,jj) 120 121 zlv(ji,jj,jk) = + ( zuf(ji,jj,jk) - zuf(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) & 122 & + ( hdivb(ji,jj+1,jk) - hdivb(ji,jj,jk) ) / e2v(ji,jj) 123 END DO 124 END DO 120 125 END DO 121 126 ELSE ! z-coordinate - full step 122 DO jj = 2, jpjm1 123 DO ji = fs_2, fs_jpim1 ! vector opt. 124 zlu(ji,jj,jk) = - ( rotb (ji ,jj,jk) - rotb (ji,jj-1,jk) ) / e2u(ji,jj) & 125 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj ,jk) ) / e1u(ji,jj) 126 127 zlv(ji,jj,jk) = + ( rotb (ji,jj ,jk) - rotb (ji-1,jj,jk) ) / e1v(ji,jj) & 128 & + ( hdivb(ji,jj+1,jk) - hdivb(ji ,jj,jk) ) / e2v(ji,jj) 127 !$OMP PARALLEL DO 128 ! ! =============== 129 DO jk = 1, jpkm1 ! Horizontal slab 130 ! ! =============== 131 DO jj = 2, jpjm1 132 DO ji = fs_2, fs_jpim1 ! vector opt. 133 zlu(ji,jj,jk) = - ( rotb (ji ,jj,jk) - rotb (ji,jj-1,jk) ) / e2u(ji,jj) & 134 & + ( hdivb(ji+1,jj,jk) - hdivb(ji,jj ,jk) ) / e1u(ji,jj) 135 136 zlv(ji,jj,jk) = + ( rotb (ji,jj ,jk) - rotb (ji-1,jj,jk) ) / e1v(ji,jj) & 137 & + ( hdivb(ji,jj+1,jk) - hdivb(ji ,jj,jk) ) / e2v(ji,jj) 138 END DO 129 139 END DO 130 END DO 140 END DO 131 141 ENDIF 132 END DO133 142 CALL lbc_lnk( zlu, 'U', -1. ) ; CALL lbc_lnk( zlv, 'V', -1. ) ! Boundary conditions 134 135 143 !$OMP PARALLE DO PRIVATE(zcu, zcv, zbt) 136 144 DO jk = 1, jpkm1 137 145 … … 145 153 146 154 ! Contravariant "laplacian" 147 zcu(:,:) = e1u(:,:) * zlu(:,:,jk) 148 zcv(:,:) = e2v(:,:) * zlv(:,:,jk) 155 DO jj = 1, jpj 156 DO ji = 1, jpi 157 zcu(ji,jj) = e1u(ji,jj) * zlu(ji,jj,jk) 158 zcv(ji,jj) = e2v(ji,jj) * zlv(ji,jj,jk) 159 END DO 160 END DO 149 161 150 162 ! Laplacian curl ( * e3f if s-coordinates or z-coordinate with partial steps) … … 180 192 CALL lbc_lnk( zuf, 'F', 1. ) 181 193 CALL lbc_lnk( zut, 'T', 1. ) 182 194 !OMP PARALLEL DO PRIVATE(ze2u, ze2v, zua, zva) 183 195 DO jk = 1, jpkm1 184 196 … … 205 217 END DO ! End of slab 206 218 ! ! =============== 207 219 ! CALL wrk_dealloc( jpi, jpj, zcu, zcv ) 208 220 CALL wrk_dealloc( jpi, jpj, jpk, zuf, zut, zlu, zlv ) 209 221 ! -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r6486 r9176 222 222 INTEGER :: ji, jj, jk ! dummy loop indices 223 223 REAL(wp) :: zx1, zy1, zfact2, zx2, zy2 ! local scalars 224 REAL(wp), POINTER, DIMENSION(:,:) :: zwx, zwy, zwz224 REAL(wp), DIMENSION(jpi, jpj) :: zwx, zwy, zwz 225 225 !!---------------------------------------------------------------------- 226 226 ! 227 227 IF( nn_timing == 1 ) CALL timing_start('vor_ene') 228 228 ! 229 229 ! CALL wrk_alloc( jpi, jpj, zwx, zwy, zwz ) 230 230 ! 231 231 IF( kt == nit000 ) THEN … … 237 237 zfact2 = 0.5 * 0.5 ! Local constant initialization 238 238 239 ! CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz)239 !$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz, zy1, zy2, zx1, zx2 ) 240 240 ! ! =============== 241 241 DO jk = 1, jpkm1 ! Horizontal slab … … 292 292 END DO ! End of slab 293 293 ! ! =============== 294 294 ! CALL wrk_dealloc( jpi, jpj, zwx, zwy, zwz ) 295 295 ! 296 296 IF( nn_timing == 1 ) CALL timing_stop('vor_ene') … … 350 350 zfact2 = 0.5 * 0.5 351 351 352 ! CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz, zww)352 !!!!$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz, zww, zy1, zy2, zx1, zx2, zua, zva, zcua, zcva) 353 353 ! ! =============== 354 354 DO jk = 1, jpkm1 ! Horizontal slab … … 466 466 zfact1 = 0.5 * 0.25 ! Local constant initialization 467 467 468 ! CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz)468 !!!!$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz, zuav, zvau ) 469 469 ! ! =============== 470 470 DO jk = 1, jpkm1 ! Horizontal slab … … 599 599 600 600 IF( ln_dynvor_een_old ) THEN ! original formulation 601 !$OMP PARALLEL DO PRIVATE(ze3) 601 602 DO jk = 1, jpk 602 603 DO jj = 1, jpjm1 … … 609 610 END DO 610 611 ELSE ! new formulation from NEMO 3.6 612 !$OMP PARALLEL DO PRIVATE(ze3, zmsk) 611 613 DO jk = 1, jpk 612 614 DO jj = 1, jpjm1 … … 628 630 629 631 630 ! CDIR PARALLEL DO PRIVATE( zwx, zwy, zwz, ztnw, ztne, ztsw, ztse)632 !!!!!$OMP PARALLEL DO PRIVATE( zwx, zwy, zwz, ztnw, ztne, ztsw, ztse, zua, zva ) 631 633 ! ! =============== 632 634 DO jk = 1, jpkm1 ! Horizontal slab … … 637 639 SELECT CASE( kvor ) ! vorticity considered 638 640 CASE ( 1 ) ! planetary vorticity (Coriolis) 639 zwz(:,:) = ff(:,:) * ze3f(:,:,jk)641 zwz(:,:) = ff(:,:) * ze3f(:,:,jk) 640 642 CASE ( 2 ) ! relative vorticity 641 zwz(:,:) = rotn(:,:,jk) * ze3f(:,:,jk)643 zwz(:,:) = rotn(:,:,jk) * ze3f(:,:,jk) 642 644 CASE ( 3 ) ! metric term 643 645 DO jj = 1, jpjm1 … … 650 652 CALL lbc_lnk( zwz, 'F', 1. ) 651 653 CASE ( 4 ) ! total (relative + planetary vorticity) 652 zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) * ze3f(:,:,jk)654 zwz(:,:) = ( rotn(:,:,jk) + ff(:,:) ) * ze3f(:,:,jk) 653 655 CASE ( 5 ) ! total (coriolis + metric) 654 656 DO jj = 1, jpjm1
Note: See TracChangeset
for help on using the changeset viewer.