Changeset 782 for trunk/NEMO
- Timestamp:
- 2008-01-07T10:07:26+01:00 (16 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 1 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/NST_SRC/agrif_opa_interp.F90
r719 r782 5 5 USE dom_oce 6 6 USE sol_oce 7 USE agrif_oce 7 8 8 9 IMPLICIT NONE … … 13 14 CONTAINS 14 15 15 SUBROUTINE Agrif_tra ( kt )16 SUBROUTINE Agrif_tra 16 17 !!--------------------------------------------- 17 18 !! *** ROUTINE Agrif_Tra *** … … 20 21 # include "vectopt_loop_substitute.h90" 21 22 22 INTEGER, INTENT(in) :: kt23 24 23 INTEGER :: ji,jj,jk 25 24 REAL(wp) :: zrhox … … 175 174 176 175 Agrif_SpecialValue=0. 177 Agrif_UseSpecialValue = .TRUE. 176 Agrif_UseSpecialValue = ln_spc_dyn 177 178 178 zua = 0. 179 179 zva = 0. … … 184 184 185 185 Agrif_SpecialValue=0. 186 Agrif_UseSpecialValue = .TRUE.186 Agrif_UseSpecialValue = ln_spc_dyn 187 187 CALL Agrif_Bc_variable(zua2d,e1u,calledweight=1.,procname=interpu2d) 188 188 CALL Agrif_Bc_variable(zva2d,e2v,calledweight=1.,procname=interpv2d) -
trunk/NEMO/NST_SRC/agrif_opa_sponge.F90
r719 r782 7 7 USE dom_oce 8 8 USE in_out_manager 9 USE agrif_oce 9 10 10 11 IMPLICIT NONE … … 13 14 PUBLIC Agrif_Sponge_Tra, Agrif_Sponge_Dyn, interptn, interpsn, interpun, interpvn 14 15 15 !! * Namelist (namagrif)16 REAL(wp) :: visc_tra = rdt17 REAL(wp) :: visc_dyn = rdt18 16 19 17 CONTAINS 20 18 21 SUBROUTINE Agrif_Sponge_Tra ( kt )19 SUBROUTINE Agrif_Sponge_Tra 22 20 !!--------------------------------------------- 23 21 !! *** ROUTINE Agrif_Sponge_Tra *** … … 25 23 #include "domzgr_substitute.h90" 26 24 27 INTEGER, INTENT(in) :: kt28 29 25 INTEGER :: ji,jj,jk 30 REAL(wp), DIMENSION(jpi,jpj,jpk) :: umasktemp,vmasktemp31 26 INTEGER :: spongearea 32 27 REAL(wp) :: timecoeff 33 28 REAL(wp) :: zta, zsa, zabe1, zabe2, zbtr 34 29 REAL(wp), DIMENSION(jpi,jpj) :: localviscsponge 35 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztab,tbdiff, sbdiff30 REAL(wp), DIMENSION(jpi,jpj,jpk) :: tbdiff, sbdiff 36 31 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztu ,ztv, zsu ,zsv 32 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztab 37 33 38 34 #if defined SPONGE 39 40 IF( kt == nit000 ) CALL agrif_sponge_init41 35 42 36 timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() … … 58 52 sbdiff(:,:,:) = sb(:,:,:) - ztab(:,:,:) 59 53 54 60 55 spongearea = 2 + 2 * Agrif_irhox() 61 56 62 57 localviscsponge = 0. 63 umasktemp = 0. 64 vmasktemp = 0. 58 59 IF (.NOT. spongedoneT) THEN 60 spe1ur(:,:) = 0. 61 spe2vr(:,:) = 0. 65 62 66 63 IF ((nbondi == -1).OR.(nbondi == 2)) THEN … … 68 65 localviscsponge(ji,:) = visc_tra * (spongearea-ji)/real(spongearea-2) 69 66 ENDDO 70 DO jk = 1, jpkm1 71 umasktemp(2:spongearea-1,:,jk) = umask(2:spongearea-1,:,jk) & 72 * 0.5 * (localviscsponge(2:spongearea-1,:) + localviscsponge(3:spongearea,:)) 73 ENDDO 74 DO jk = 1, jpkm1 75 vmasktemp(2:spongearea,1:jpjm1,jk) = vmask(2:spongearea,1:jpjm1,jk) & 76 * 0.5 * (localviscsponge(2:spongearea,1:jpjm1) + localviscsponge(2:spongearea,2:jpj)) 77 ENDDO 67 68 spe1ur(2:spongearea-1,:)=0.5 * (localviscsponge(2:spongearea-1,:) + localviscsponge(3:spongearea,:)) & 69 * e2u(2:spongearea-1,:) / e1u(2:spongearea-1,:) 70 71 spe2vr(2:spongearea,1:jpjm1) = 0.5 * (localviscsponge(2:spongearea,1:jpjm1) + & 72 localviscsponge(2:spongearea,2:jpj)) & 73 * e1v(2:spongearea,1:jpjm1) / e2v(2:spongearea,1:jpjm1) 78 74 ENDIF 79 75 … … 82 78 localviscsponge(ji,:) = visc_tra * (ji - (nlci-spongearea+1))/real(spongearea-2) 83 79 ENDDO 84 DO jk = 1, jpkm1 85 umasktemp(nlci-spongearea + 1:nlci-2,:,jk) = umask(nlci-spongearea + 1:nlci-2,:,jk)&86 * 0.5 * (localviscsponge(nlci-spongearea + 1:nlci-2,:) + localviscsponge(nlci-spongearea + 2:nlci-1,:)) 87 ENDDO 88 DO jk = 1, jpkm1 89 vmasktemp(nlci-spongearea + 1:nlci-1,1:jpjm1,jk) = vmask(nlci-spongearea + 1:nlci-1,1:jpjm1,jk) &90 * 0.5 * (localviscsponge(nlci-spongearea + 1:nlci-1,1:jpjm1) + localviscsponge(nlci-spongearea + 1:nlci-1,2:jpj)) 91 ENDDO 80 81 spe1ur(nlci-spongearea + 1:nlci-2,:)=0.5 * (localviscsponge(nlci-spongearea + 1:nlci-2,:) + & 82 localviscsponge(nlci-spongearea + 2:nlci-1,:)) & 83 * e2u(nlci-spongearea + 1:nlci-2,:) / e1u(nlci-spongearea + 1:nlci-2,:) 84 85 spe2vr(nlci-spongearea + 1:nlci-1,1:jpjm1) = 0.5 * (localviscsponge(nlci-spongearea + 1:nlci-1,1:jpjm1) & 86 + localviscsponge(nlci-spongearea + 1:nlci-1,2:jpj)) & 87 * e1v(nlci-spongearea + 1:nlci-1,1:jpjm1) / e2v(nlci-spongearea + 1:nlci-1,1:jpjm1) 92 88 ENDIF 93 89 … … 97 93 localviscsponge(:,jj) = visc_tra * (spongearea-jj)/real(spongearea-2) 98 94 ENDDO 99 DO jk = 1, jpkm1 100 vmasktemp(:,2:spongearea-1,jk) = vmask(:,2:spongearea-1,jk)&101 * 0.5 * (localviscsponge(:,2:spongearea-1) + localviscsponge(:,3:spongearea)) 102 ENDDO 103 DO jk = 1, jpkm1 104 umasktemp(1:jpim1,2:spongearea,jk) = umask(1:jpim1,2:spongearea,jk)&105 * 0.5 * (localviscsponge(1:jpim1,2:spongearea) + localviscsponge(2:jpi,2:spongearea)) 106 ENDDO 95 96 spe1ur(1:jpim1,2:spongearea)=0.5 * (localviscsponge(1:jpim1,2:spongearea) + & 97 localviscsponge(2:jpi,2:spongearea)) & 98 * e2u(1:jpim1,2:spongearea) / e1u(1:jpim1,2:spongearea) 99 100 spe2vr(:,2:spongearea-1) = 0.5 * (localviscsponge(:,2:spongearea-1) + & 101 localviscsponge(:,3:spongearea)) & 102 * e1v(:,2:spongearea-1) / e2v(:,2:spongearea-1) 107 103 ENDIF 108 104 … … 111 107 localviscsponge(:,jj) = visc_tra * (jj - (nlcj-spongearea+1))/real(spongearea-2) 112 108 ENDDO 113 DO jk = 1, jpkm1 114 vmasktemp(:,nlcj-spongearea + 1:nlcj-2,jk) = vmask(:,nlcj-spongearea + 1:nlcj-2,jk) & 115 * 0.5 * (localviscsponge(:,nlcj-spongearea + 1:nlcj-2) + localviscsponge(:,nlcj-spongearea + 2:nlcj-1)) 116 ENDDO 117 DO jk = 1, jpkm1 118 umasktemp(1:jpim1,nlcj-spongearea + 1:nlcj-1,jk) = umask(1:jpim1,nlcj-spongearea + 1:nlcj-1,jk) & 119 * 0.5 * (localviscsponge(1:jpim1,nlcj-spongearea + 1:nlcj-1) + localviscsponge(2:jpi,nlcj-spongearea + 1:nlcj-1)) 120 ENDDO 121 ENDIF 122 123 IF (.NOT. spongedoneT) THEN 124 zspe1ur(:,:) = e2u(:,:) / e1u(:,:) 125 zspe2vr(:,:) = e1v(:,:) / e2v(:,:) 126 zspbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:)) 109 110 spe1ur(1:jpim1,nlcj-spongearea + 1:nlcj-1)=0.5 * (localviscsponge(1:jpim1,nlcj-spongearea + 1:nlcj-1) + & 111 localviscsponge(2:jpi,nlcj-spongearea + 1:nlcj-1)) & 112 * e2u(1:jpim1,nlcj-spongearea + 1:nlcj-1) / e1u(1:jpim1,nlcj-spongearea + 1:nlcj-1) 113 114 spe2vr(:,nlcj-spongearea + 1:nlcj-2) = 0.5 * (localviscsponge(:,nlcj-spongearea + 1:nlcj-2) + & 115 localviscsponge(:,nlcj-spongearea + 2:nlcj-1)) & 116 * e1v(:,nlcj-spongearea + 1:nlcj-2) / e2v(:,nlcj-spongearea + 1:nlcj-2) 117 ENDIF 118 119 spbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:)) 127 120 128 121 spongedoneT = .TRUE. … … 133 126 DO ji = 1, jpim1 134 127 #if defined key_zco 135 zabe1 = umask temp(ji,jj,jk) * zspe1ur(ji,jj)136 zabe2 = vmask temp(ji,jj,jk) * zspe2vr(ji,jj)137 #else 138 zabe1 = umask temp(ji,jj,jk) * zspe1ur(ji,jj) * fse3u(ji,jj,jk)139 zabe2 = vmask temp(ji,jj,jk) * zspe2vr(ji,jj) * fse3v(ji,jj,jk)128 zabe1 = umask(ji,jj,jk) * spe1ur(ji,jj) 129 zabe2 = vmask(ji,jj,jk) * spe2vr(ji,jj) 130 #else 131 zabe1 = umask(ji,jj,jk) * spe1ur(ji,jj) * fse3u(ji,jj,jk) 132 zabe2 = vmask(ji,jj,jk) * spe2vr(ji,jj) * fse3v(ji,jj,jk) 140 133 #endif 141 134 ztu(ji,jj,jk) = zabe1 * ( tbdiff(ji+1,jj ,jk) - tbdiff(ji,jj,jk) ) … … 149 142 DO ji = 2,jpim1 150 143 #if defined key_zco 151 zbtr = zspbtr2(ji,jj)152 #else 153 zbtr = zspbtr2(ji,jj) / fse3t(ji,jj,jk)144 zbtr = spbtr2(ji,jj) 145 #else 146 zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk) 154 147 #endif 155 148 ! horizontal diffusive trends … … 170 163 END SUBROUTINE Agrif_Sponge_Tra 171 164 172 SUBROUTINE Agrif_Sponge_dyn ( kt )165 SUBROUTINE Agrif_Sponge_dyn 173 166 !!--------------------------------------------- 174 167 !! *** ROUTINE Agrif_Sponge_dyn *** 175 168 !!--------------------------------------------- 176 169 #include "domzgr_substitute.h90" 177 178 INTEGER,INTENT(in) :: kt179 170 180 171 INTEGER :: ji,jj,jk 181 172 INTEGER :: spongearea 182 173 REAL(wp) :: timecoeff 183 REAL(wp) :: ze2u, ze1v, zua, zva 174 REAL(wp) :: ze2u, ze1v, zua, zva, zbtr 184 175 REAL(wp), DIMENSION(jpi,jpj) :: localviscsponge 185 176 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztab, ubdiff, vbdiff,rotdiff,hdivdiff 186 REAL(wp), DIMENSION(jpi,jpj,jpk) :: umasktemp,vmasktemp187 177 188 178 #if defined SPONGE … … 191 181 192 182 Agrif_SpecialValue=0. 193 Agrif_UseSpecialValue = .TRUE.183 Agrif_UseSpecialValue = ln_spc_dyn 194 184 ztab = 0.e0 195 185 CALL Agrif_Bc_Variable(ztab, ua,calledweight=timecoeff,procname=interpun) 196 186 Agrif_UseSpecialValue = .FALSE. 197 187 198 ubdiff(:,:,:) = ub(:,:,:) - ztab(:,:,:)188 ubdiff(:,:,:) = (ub(:,:,:) - ztab(:,:,:))*umask(:,:,:) 199 189 200 190 ztab = 0.e0 201 191 Agrif_SpecialValue=0. 202 Agrif_UseSpecialValue = .TRUE.192 Agrif_UseSpecialValue = ln_spc_dyn 203 193 CALL Agrif_Bc_Variable(ztab, va,calledweight=timecoeff,procname=interpvn) 204 194 Agrif_UseSpecialValue = .FALSE. 205 195 206 vbdiff(:,:,:) = vb(:,:,:) - ztab(:,:,:)196 vbdiff(:,:,:) = (vb(:,:,:) - ztab(:,:,:))*vmask(:,:,:) 207 197 208 198 spongearea = 2 + 2 * Agrif_irhox() 209 199 210 200 localviscsponge = 0. 211 umasktemp = 0. 212 vmasktemp = 0. 201 202 IF (.NOT. spongedoneU) THEN 203 spe1ur2(:,:) = 0. 204 spe2vr2(:,:) = 0. 213 205 214 206 IF ((nbondi == -1).OR.(nbondi == 2)) THEN … … 216 208 localviscsponge(ji,:) = visc_dyn * (spongearea-ji)/real(spongearea-2) 217 209 ENDDO 218 DO jk = 1, jpkm1 219 umasktemp(2:spongearea-1,:,jk) = umask(2:spongearea-1,:,jk) & 220 * 0.5 * (localviscsponge(2:spongearea-1,:) + localviscsponge(3:spongearea,:)) 221 ENDDO 222 DO jk = 1, jpkm1 223 vmasktemp(2:spongearea,1:jpjm1,jk) = vmask(2:spongearea,1:jpjm1,jk) & 224 * 0.5 * (localviscsponge(2:spongearea,1:jpjm1) + localviscsponge(2:spongearea,2:jpj)) 225 ENDDO 210 211 spe1ur2(2:spongearea-1,:)=0.5 * (localviscsponge(2:spongearea-1,:) + localviscsponge(3:spongearea,:)) 212 213 spe2vr2(2:spongearea,1:jpjm1) = 0.5 * (localviscsponge(2:spongearea,1:jpjm1) + & 214 localviscsponge(2:spongearea,2:jpj)) 226 215 ENDIF 227 216 … … 230 219 localviscsponge(ji,:) = visc_dyn * (ji - (nlci-spongearea+1))/real(spongearea-2) 231 220 ENDDO 232 DO jk = 1, jpkm1 233 umasktemp(nlci-spongearea + 1:nlci-2,:,jk) = umask(nlci-spongearea + 1:nlci-2,:,jk) & 234 * 0.5 * (localviscsponge(nlci-spongearea + 1:nlci-2,:) + localviscsponge(nlci-spongearea + 2:nlci-1,:)) 235 ENDDO 236 DO jk = 1, jpkm1 237 vmasktemp(nlci-spongearea + 1:nlci-1,1:jpjm1,jk) = vmask(nlci-spongearea + 1:nlci-1,1:jpjm1,jk) & 238 * 0.5 * (localviscsponge(nlci-spongearea + 1:nlci-1,1:jpjm1) + localviscsponge(nlci-spongearea + 1:nlci-1,2:jpj)) 239 ENDDO 240 ENDIF 221 222 spe1ur2(nlci-spongearea + 1:nlci-2,:)=0.5 * (localviscsponge(nlci-spongearea + 1:nlci-2,:) + & 223 localviscsponge(nlci-spongearea + 2:nlci-1,:)) 224 225 spe2vr2(nlci-spongearea + 1:nlci-1,1:jpjm1) = 0.5 * (localviscsponge(nlci-spongearea + 1:nlci-1,1:jpjm1) & 226 + localviscsponge(nlci-spongearea + 1:nlci-1,2:jpj)) 227 ENDIF 228 241 229 242 230 IF ((nbondj == -1).OR.(nbondj == 2)) THEN … … 244 232 localviscsponge(:,jj) = visc_dyn * (spongearea-jj)/real(spongearea-2) 245 233 ENDDO 246 DO jk = 1, jpkm1 247 vmasktemp(:,2:spongearea-1,jk) = vmask(:,2:spongearea-1,jk) & 248 * 0.5 * (localviscsponge(:,2:spongearea-1) + localviscsponge(:,3:spongearea)) 249 ENDDO 250 DO jk = 1, jpkm1 251 umasktemp(1:jpim1,2:spongearea,jk) = umask(1:jpim1,2:spongearea,jk) & 252 * 0.5 * (localviscsponge(1:jpim1,2:spongearea) + localviscsponge(2:jpi,2:spongearea)) 253 ENDDO 234 235 spe1ur2(1:jpim1,2:spongearea)=0.5 * (localviscsponge(1:jpim1,2:spongearea) + & 236 localviscsponge(2:jpi,2:spongearea)) 237 238 spe2vr2(:,2:spongearea-1) = 0.5 * (localviscsponge(:,2:spongearea-1) + & 239 localviscsponge(:,3:spongearea)) 254 240 ENDIF 255 241 … … 258 244 localviscsponge(:,jj) = visc_dyn * (jj - (nlcj-spongearea+1))/real(spongearea-2) 259 245 ENDDO 260 DO jk = 1, jpkm1 261 vmasktemp(:,nlcj-spongearea + 1:nlcj-2,jk) = vmask(:,nlcj-spongearea + 1:nlcj-2,jk) & 262 * 0.5 * (localviscsponge(:,nlcj-spongearea + 1:nlcj-2) + localviscsponge(:,nlcj-spongearea + 2:nlcj-1)) 263 ENDDO 264 DO jk = 1, jpkm1 265 umasktemp(1:jpim1,nlcj-spongearea + 1:nlcj-1,jk) = umask(1:jpim1,nlcj-spongearea + 1:nlcj-1,jk) & 266 * 0.5 * (localviscsponge(1:jpim1,nlcj-spongearea + 1:nlcj-1) + localviscsponge(2:jpi,nlcj-spongearea + 1:nlcj-1)) 267 ENDDO 268 ENDIF 269 270 ubdiff = ubdiff * umasktemp 271 vbdiff = vbdiff * vmasktemp 272 246 247 spe1ur2(1:jpim1,nlcj-spongearea + 1:nlcj-1)=0.5 * (localviscsponge(1:jpim1,nlcj-spongearea + 1:nlcj-1) + & 248 localviscsponge(2:jpi,nlcj-spongearea + 1:nlcj-1)) 249 250 spe2vr2(:,nlcj-spongearea + 1:nlcj-2) = 0.5 * (localviscsponge(:,nlcj-spongearea + 1:nlcj-2) + & 251 localviscsponge(:,nlcj-spongearea + 2:nlcj-1)) 252 ENDIF 253 254 spongedoneU = .TRUE. 255 256 spbtr3(:,:) = 1./( e1f(:,:) * e2f(:,:)) 257 ENDIF 258 259 IF (.NOT. spongedoneT) THEN 260 spbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:)) 261 ENDIF 262 263 DO jk=1,jpkm1 264 ubdiff(:,:,jk) = ubdiff(:,:,jk) * spe1ur2(:,:) 265 vbdiff(:,:,jk) = vbdiff(:,:,jk) * spe2vr2(:,:) 266 ENDDO 267 273 268 hdivdiff = 0. 274 269 rotdiff = 0. … … 283 278 DO ji = 2, jpim1 ! vector opt. 284 279 #if defined key_zco 280 zbtr = spbtr2(ji,jj) 285 281 hdivdiff(ji,jj,jk) = ( e2u(ji,jj) * ubdiff(ji,jj,jk) & 286 282 - e2u(ji-1,jj ) * ubdiff(ji-1,jj ,jk) & 287 283 & + e1v(ji,jj) * vbdiff(ji,jj,jk) - & 288 & e1v(ji ,jj-1) * vbdiff(ji ,jj-1,jk) ) &289 & / ( e1t(ji,jj) * e2t(ji,jj) ) 290 #else 284 & e1v(ji ,jj-1) * vbdiff(ji ,jj-1,jk) ) * zbtr 285 #else 286 zbtr = spbtr2(ji,jj) / fse3t(ji,jj,jk) 291 287 hdivdiff(ji,jj,jk) = & 292 288 ( e2u(ji,jj)*fse3u(ji,jj,jk) * & … … 295 291 + e1v(ji,jj)*fse3v(ji,jj,jk) * & 296 292 vbdiff(ji,jj,jk) - e1v(ji ,jj-1)* & 297 fse3v(ji ,jj-1,jk) * vbdiff(ji ,jj-1,jk) ) & 298 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 293 fse3v(ji ,jj-1,jk) * vbdiff(ji ,jj-1,jk) ) * zbtr 299 294 #endif 300 295 END DO … … 303 298 DO jj = 1, jpjm1 304 299 DO ji = 1, jpim1 ! vector opt. 300 #if defined key_zco 301 zbtr = spbtr3(ji,jj) 305 302 rotdiff(ji,jj,jk) = ( e2v(ji+1,jj ) * vbdiff(ji+1,jj ,jk) - e2v(ji,jj) * vbdiff(ji,jj,jk) & 306 303 & - e1u(ji ,jj+1) * ubdiff(ji ,jj+1,jk) + e1u(ji,jj) * ubdiff(ji,jj,jk) ) & 307 & * fmask(ji,jj,jk) / ( e1f(ji,jj) * e2f(ji,jj) ) 304 & * fmask(ji,jj,jk) * zbtr 305 #else 306 zbtr = spbtr3(ji,jj) * fse3f(ji,jj,jk) 307 rotdiff(ji,jj,jk) = ( e2v(ji+1,jj ) * vbdiff(ji+1,jj ,jk) - e2v(ji,jj) * vbdiff(ji,jj,jk) & 308 & - e1u(ji ,jj+1) * ubdiff(ji ,jj+1,jk) + e1u(ji,jj) * ubdiff(ji,jj,jk) ) & 309 & * fmask(ji,jj,jk) * zbtr 310 #endif 308 311 END DO 309 312 END DO … … 330 333 ze1v ) / e2v(ji,jj) 331 334 #else 332 ze2u = rotdiff (ji,jj,jk) *fse3f(ji,jj,jk)335 ze2u = rotdiff (ji,jj,jk) 333 336 ze1v = hdivdiff(ji,jj,jk) 334 337 ! horizontal diffusive trends 335 zua = - ( ze2u - rotdiff (ji,jj-1,jk)* & 336 fse3f(ji,jj-1,jk) ) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) & 338 zua = - ( ze2u - rotdiff (ji,jj-1,jk)) / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) & 337 339 + ( hdivdiff(ji+1,jj,jk) - ze1v & 338 340 ) / e1u(ji,jj) 339 341 340 zva = + ( ze2u - rotdiff (ji-1,jj,jk)* & 341 fse3f(ji-1,jj,jk) ) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) & 342 zva = + ( ze2u - rotdiff (ji-1,jj,jk)) / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) & 342 343 + ( hdivdiff(ji,jj+1,jk) - ze1v & 343 344 ) / e2v(ji,jj) … … 357 358 END SUBROUTINE Agrif_Sponge_dyn 358 359 359 SUBROUTINE agrif_sponge_init360 !!---------------------------------------------361 !! *** ROUTINE agrif_sponge_init ***362 !!---------------------------------------------363 NAMELIST/namagrif/ visc_tra, visc_dyn364 REWIND ( numnam )365 READ ( numnam, namagrif )366 367 IF(lwp) THEN368 WRITE(numout,*)369 WRITE(numout,*) 'agrif_sponge_init : agrif sponge parameters'370 WRITE(numout,*) '~~~~~~~~~~~~'371 WRITE(numout,*) ' Namelist namagrif : set sponge parameters'372 WRITE(numout,*) ' sponge coefficient for tracers = ', visc_tra373 WRITE(numout,*) ' sponge coefficient for dynamics = ', visc_dyn374 ENDIF375 376 END SUBROUTINE agrif_sponge_init377 378 360 SUBROUTINE interptn(tabres,i1,i2,j1,j2,k1,k2) 379 361 !!--------------------------------------------- … … 402 384 END SUBROUTINE interpsn 403 385 404 405 386 SUBROUTINE interpun(tabres,i1,i2,j1,j2,k1,k2) 406 387 !!--------------------------------------------- -
trunk/NEMO/NST_SRC/agrif_opa_update.F90
r719 r782 6 6 USE oce 7 7 USE dom_oce 8 USE agrif_oce 8 9 9 10 IMPLICIT NONE … … 12 13 PUBLIC Agrif_Update_Tra, Agrif_Update_Dyn 13 14 14 INTEGER, PARAMETER :: nbclineupdate = 315 15 INTEGER :: nbcline 16 16 … … 68 68 nbcline = nbcline + 1 69 69 70 Agrif_UseSpecialValueInUpdate = .TRUE.70 Agrif_UseSpecialValueInUpdate = ln_spc_dyn 71 71 Agrif_SpecialValueFineGrid = 0. 72 72 CALL Agrif_Update_Variable(ztab2d,sshn,procname = updateSSH) -
trunk/NEMO/NST_SRC/agrif_top_interp.F90
r719 r782 5 5 USE dom_oce 6 6 USE sol_oce 7 USE agrif_oce 7 8 USE trcstp 8 9 USE sms -
trunk/NEMO/NST_SRC/agrif_top_update.F90
r719 r782 7 7 USE oce 8 8 USE dom_oce 9 USE agrif_oce 9 10 USE trcstp 10 11 USE sms … … 15 16 PUBLIC Agrif_Update_Trc 16 17 17 INTEGER, PARAMETER :: nbclineupdate = 318 18 INTEGER :: nbcline 19 19 -
trunk/NEMO/NST_SRC/agrif_user.F90
r719 r782 65 65 USE ice_oce 66 66 #endif 67 #if defined key_agrif68 67 USE agrif_opa_update 69 68 USE agrif_opa_interp … … 71 70 USE agrif_top_update 72 71 USE agrif_top_interp 73 #endif74 72 75 73 IMPLICIT NONE … … 89 87 90 88 Call opa_init ! Initializations of each fine grid 89 Call agrif_opa_init 91 90 92 91 ! Specific fine grid Initializations … … 311 310 End SUBROUTINE Agrif_detect 312 311 312 SUBROUTINE agrif_opa_init 313 !!--------------------------------------------- 314 !! *** ROUTINE agrif_init *** 315 !!--------------------------------------------- 316 USE agrif_oce 317 USE in_out_manager 318 319 IMPLICIT NONE 320 321 NAMELIST/namagrif/ nbclineupdate, visc_tra, visc_dyn, ln_spc_dyn 322 323 REWIND ( numnam ) 324 READ ( numnam, namagrif ) 325 IF(lwp) THEN 326 WRITE(numout,*) 327 WRITE(numout,*) 'agrif_opa_init : agrif parameters' 328 WRITE(numout,*) '~~~~~~~~~~~~' 329 WRITE(numout,*) ' Namelist namagrif : set agrif parameters' 330 WRITE(numout,*) ' baroclinic update frequency = ', nbclineupdate 331 WRITE(numout,*) ' sponge coefficient for tracers = ', visc_tra 332 WRITE(numout,*) ' sponge coefficient for dynamics = ', visc_dyn 333 WRITE(numout,*) ' use special values for dynamics = ', ln_spc_dyn 334 WRITE(numout,*) 335 ENDIF 336 337 END SUBROUTINE agrif_opa_init 313 338 #if defined key_mpp_mpi 314 315 339 SUBROUTINE Agrif_InvLoc(indloc,nprocloc,i,indglob) 316 340 !!------------------------------------------ … … 335 359 336 360 END SUBROUTINE Agrif_InvLoc 337 338 #endif 339 361 #endif 340 362 #else 341 363 SUBROUTINE Subcalledbyagrif -
trunk/NEMO/OPA_SRC/DOM/dom_oce.F90
r719 r782 216 216 ! ! parameterize exchanges through straits 217 217 218 #if defined key_agrif219 !!----------------------------------------------------------------------220 !! agrif sponge layer221 !!----------------------------------------------------------------------222 LOGICAL, PUBLIC :: spongedoneT = .FALSE. !: ???223 REAL(wp), PUBLIC, DIMENSION(jpi,jpj) :: &224 zspe1ur, zspe2vr ,zspbtr2 !: ???225 !!----------------------------------------------------------------------226 #endif227 228 218 END MODULE dom_oce -
trunk/NEMO/OPA_SRC/DYN/dynnxt.F90
r719 r782 83 83 !!---------------------------------------------------------------------- 84 84 !! OPA 9.0 , LOCEAN-IPSL (2005) 85 !! $Header $85 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/DYN/dynnxt.F90,v 1.13 2007/05/25 15:51:50 opalod Exp $ 86 86 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 87 87 !!---------------------------------------------------------------------- -
trunk/NEMO/OPA_SRC/TRA/tranxt.F90
r719 r782 47 47 !!---------------------------------------------------------------------- 48 48 !! OPA 9.0 , LOCEAN-IPSL (2006) 49 !! $Header $49 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/TRA/tranxt.F90,v 1.12 2007/05/25 15:51:50 opalod Exp $ 50 50 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 51 51 !!---------------------------------------------------------------------- … … 169 169 ! ! =============== 170 170 ! Update tracers on open boundaries. 171 CALL Agrif_tra ( kt )171 CALL Agrif_tra 172 172 ! ! =============== 173 173 DO jk = 1, jpkm1 ! Horizontal slab -
trunk/NEMO/OPA_SRC/step.F90
r719 r782 134 134 !!---------------------------------------------------------------------- 135 135 !! OPA 9.0 , LOCEAN-IPSL (2005) 136 !! $Header $136 !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/step.F90,v 1.35 2007/06/01 16:55:39 opalod Exp $ 137 137 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 138 138 !!---------------------------------------------------------------------- … … 333 333 CALL tra_ldf ( kstp ) ! lateral mixing 334 334 #if defined key_agrif 335 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra ( kstp )! tracers sponge335 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_tra ! tracers sponge 336 336 #endif 337 337 CALL tra_zdf ( kstp ) ! vertical mixing … … 370 370 CALL dyn_ldf( kstp ) ! lateral mixing 371 371 #if defined key_agrif 372 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_dyn ( kstp )! momemtum sponge372 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_dyn ! momemtum sponge 373 373 #endif 374 374 CALL dyn_hpg( kstp ) ! horizontal gradient of Hydrostatic pressure
Note: See TracChangeset
for help on using the changeset viewer.