- 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/domngb.F90
r6748 r7508 42 42 CHARACTER(len=1), INTENT(in ) :: cdgrid ! grid name 'T', 'U', 'V', 'W' 43 43 ! 44 INTEGER :: ik ! working level44 INTEGER :: ik, jj, ji ! working level 45 45 INTEGER , DIMENSION(2) :: iloc 46 46 REAL(wp) :: zlon, zmini … … 52 52 CALL wrk_alloc( jpi,jpj, zglam, zgphi, zmask, zdist ) 53 53 ! 54 zmask(:,:) = 0._wp 54 !$OMP PARALLEL DO schedule(static) private(jj, ji) 55 DO jj = 1, jpj 56 DO ji = 1, jpi 57 zmask(ji,jj) = 0._wp 58 END DO 59 END DO 55 60 ik = 1 56 61 IF ( PRESENT(kkk) ) ik=kkk 57 62 SELECT CASE( cdgrid ) 58 63 CASE( 'U' ) 59 !$OMP PARALLEL WORKSHARE 60 zglam(:,:) = glamu(:,:) ; zgphi(:,:) = gphiu(:,:) ; zmask(nldi:nlei,nldj:nlej) = umask(nldi:nlei,nldj:nlej,ik) 61 !$OMP END PARALLEL WORKSHARE 64 !$OMP PARALLEL DO schedule(static) private(jj, ji) 65 DO jj = 1, jpj 66 DO ji = 1, jpi 67 zglam(ji,jj) = glamu(ji,jj) ; zgphi(ji,jj) = gphiu(ji,jj) 68 END DO 69 END DO 70 zmask(nldi:nlei,nldj:nlej) = umask(nldi:nlei,nldj:nlej,ik) 62 71 CASE( 'V' ) 63 !$OMP PARALLEL WORKSHARE 64 zglam(:,:) = glamv(:,:) ; zgphi(:,:) = gphiv(:,:) ; zmask(nldi:nlei,nldj:nlej) = vmask(nldi:nlei,nldj:nlej,ik) 65 !$OMP END PARALLEL WORKSHARE 72 !$OMP PARALLEL DO schedule(static) private(jj, ji) 73 DO jj = 1, jpj 74 DO ji = 1, jpi 75 zglam(ji,jj) = glamv(ji,jj) ; zgphi(ji,jj) = gphiv(ji,jj) 76 END DO 77 END DO 78 zmask(nldi:nlei,nldj:nlej) = vmask(nldi:nlei,nldj:nlej,ik) 66 79 CASE( 'F' ) 67 !$OMP PARALLEL WORKSHARE 68 zglam(:,:) = glamf(:,:) ; zgphi(:,:) = gphif(:,:) ; zmask(nldi:nlei,nldj:nlej) = fmask(nldi:nlei,nldj:nlej,ik) 69 !$OMP END PARALLEL WORKSHARE 80 !$OMP PARALLEL DO schedule(static) private(jj, ji) 81 DO jj = 1, jpj 82 DO ji = 1, jpi 83 zglam(ji,jj) = glamf(ji,jj) ; zgphi(ji,jj) = gphif(ji,jj) 84 END DO 85 END DO 86 zmask(nldi:nlei,nldj:nlej) = fmask(nldi:nlei,nldj:nlej,ik) 70 87 CASE DEFAULT 71 !$OMP PARALLEL WORKSHARE 72 zglam(:,:) = glamt(:,:) ; zgphi(:,:) = gphit(:,:) ; zmask(nldi:nlei,nldj:nlej) = tmask(nldi:nlei,nldj:nlej,ik) 73 !$OMP END PARALLEL WORKSHARE 88 !$OMP PARALLEL DO schedule(static) private(jj, ji) 89 DO jj = 1, jpj 90 DO ji = 1, jpi 91 zglam(ji,jj) = glamt(ji,jj) ; zgphi(ji,jj) = gphit(ji,jj) 92 END DO 93 END DO 94 zmask(nldi:nlei,nldj:nlej) = tmask(nldi:nlei,nldj:nlej,ik) 74 95 END SELECT 75 96 76 97 IF (jphgr_msh /= 2 .AND. jphgr_msh /= 3) THEN 77 98 zlon = MOD( plon + 720., 360. ) ! plon between 0 and 360 78 zglam(:,:) = MOD( zglam(:,:) + 720., 360. ) ! glam between 0 and 360 79 IF( zlon > 270. ) zlon = zlon - 360. ! zlon between -90 and 270 80 IF( zlon < 90. ) WHERE( zglam(:,:) > 180. ) zglam(:,:) = zglam(:,:) - 360. ! glam between -180 and 180 81 zglam(:,:) = zglam(:,:) - zlon 99 !$OMP PARALLEL DO schedule(static) private(jj, ji, zglam, zlon) 100 DO jj = 1, jpj 101 DO ji = 1, jpi 102 zglam(ji,jj) = MOD( zglam(ji,jj) + 720., 360. ) ! glam between 0 and 360 103 IF( zlon > 270. ) zlon = zlon - 360. ! zlon between -90 and 270 104 IF( zlon < 90. ) THEN 105 IF( zglam(ji,jj) > 180. ) zglam(ji,jj) = zglam(ji,jj) - 360. ! glam between -180 and 180 106 END IF 107 zglam(ji,jj) = zglam(ji,jj) - zlon 108 END DO 109 END DO 82 110 ELSE 83 zglam(:,:) = zglam(:,:) - plon 111 !$OMP PARALLEL DO schedule(static) private(jj, ji) 112 DO jj = 1, jpj 113 DO ji = 1, jpi 114 zglam(ji,jj) = zglam(ji,jj) - plon 115 END DO 116 END DO 84 117 END IF 85 !$OMP PARALLEL WORKSHARE 86 zgphi(:,:) = zgphi(:,:) - plat 87 zdist(:,:) = zglam(:,:) * zglam(:,:) + zgphi(:,:) * zgphi(:,:) 88 !$OMP END PARALLEL WORKSHARE 118 !$OMP PARALLEL DO schedule(static) private(jj, ji) 119 DO jj = 1, jpj 120 DO ji = 1, jpi 121 zgphi(ji,jj) = zgphi(ji,jj) - plat 122 zdist(ji,jj) = zglam(ji,jj) * zglam(ji,jj) + zgphi(ji,jj) * zgphi(ji,jj) 123 END DO 124 END DO 89 125 IF( lk_mpp ) THEN 90 126 CALL mpp_minloc( zdist(:,:), zmask, zmini, kii, kjj)
Note: See TracChangeset
for help on using the changeset viewer.