Changeset 10685
- Timestamp:
- 2019-02-14T16:55:25+01:00 (6 years ago)
- Location:
- branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r10684 r10685 167 167 ! Check and write out namelist parameters 168 168 ! ----------------------------------------- 169 170 169 ! IF( jperio /= 0 ) CALL ctl_stop( 'bdy_segs: Cyclic or symmetric,', & 170 ! & ' and general open boundary condition are not compatible' ) 171 171 172 172 IF( nb_bdy == 0 ) THEN … … 1161 1161 bdytmask(:,:) = ssmask(:,:) 1162 1162 1163 IF( ln_mask_file ) THEN 1164 CALL iom_open( cn_mask_file, inum ) 1165 CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) 1166 CALL iom_close( inum ) 1167 1168 ! Derive mask on U and V grid from mask on T grid 1169 bdyumask(:,:) = 0._wp 1170 bdyvmask(:,:) = 0._wp 1171 DO ij=1, jpjm1 1172 DO ii=1, jpim1 1173 bdyumask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii+1, ij ) 1174 bdyvmask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii ,ij+1) 1175 END DO 1163 ! we need to derive mask on U and V grid from mask on T grid here. 1164 bdyumask(:,:) = 0._wp 1165 bdyvmask(:,:) = 0._wp 1166 DO ij = 1, jpjm1 1167 DO ii = 1, jpim1 1168 bdyumask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii+1, ij ) 1169 bdyvmask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii ,ij+1) 1176 1170 END DO 1177 CALL lbc_lnk( bdyumask(:,:), 'U', 1. ) ; CALL lbc_lnk( bdyvmask(:,:), 'V', 1. ) ! Lateral boundary cond. 1178 1179 ENDIF ! ln_mask_file=.TRUE. 1180 1181 IF( .NOT.ln_mask_file ) THEN 1182 ! If .not. ln_mask_file then we need to derive mask on U and V grid from mask on T grid here. 1183 bdyumask(:,:) = 0._wp 1184 bdyvmask(:,:) = 0._wp 1185 DO ij = 1, jpjm1 1186 DO ii = 1, jpim1 1187 bdyumask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii+1, ij ) 1188 bdyvmask(ii,ij) = bdytmask(ii,ij) * bdytmask(ii ,ij+1) 1189 END DO 1190 END DO 1191 CALL lbc_lnk( bdyumask(:,:), 'U', 1. ) ; CALL lbc_lnk( bdyvmask(:,:), 'V', 1. ) ! Lateral boundary cond. 1192 ENDIF 1193 1171 END DO 1172 CALL lbc_lnk( bdyumask(:,:), 'U', 1. ) ; CALL lbc_lnk( bdyvmask(:,:), 'V', 1. ) ! Lateral boundary cond. 1173 1194 1174 ! bdy masks are now set to zero on boundary points: 1195 1175 ! -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/DIA/diaharm.F90
r10684 r10685 9 9 !!---------------------------------------------------------------------- 10 10 !! 'key_diaharm' 11 !! 12 !! NB: 2017-12 : add 3D harmonic analysis of velocities 13 !! integration of Maria Luneva's development 14 !! 'key_3Ddiaharm' 11 15 !!---------------------------------------------------------------------- 12 16 USE oce ! ocean dynamics and tracers variables … … 17 21 USE sbctide ! Tidal forcing or not 18 22 ! 23 # if defined key_3Ddiaharm 24 USE zdf_oce 25 #endif 26 ! 19 27 USE in_out_manager ! I/O units 20 28 USE iom ! I/0 library … … 38 46 INTEGER :: nb_ana ! Number of harmonics to analyse 39 47 40 INTEGER , ALLOCATABLE, DIMENSION(:) :: name 41 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ana_temp 42 REAL(wp), ALLOCATABLE, DIMENSION(:) :: ana_freq, ut , vt , ft 43 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: out_eta , out_u, out_v 48 49 INTEGER , ALLOCATABLE, DIMENSION(:) :: name 50 REAL(wp), ALLOCATABLE, DIMENSION(:) :: ana_freq, ut , vt , ft 51 # if defined key_3Ddiaharm 52 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:,:) :: ana_temp 53 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: out_eta , out_u, out_v , out_w , out_dzi 54 # else 55 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ana_temp 56 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: out_eta , out_u, out_v 57 # endif 44 58 45 59 INTEGER :: ninco, nsparse … … 71 85 !! 72 86 !!-------------------------------------------------------------------- 73 INTEGER :: jh, nhan, j k, ji87 INTEGER :: jh, nhan, jl 74 88 INTEGER :: ios ! Local integer output status for namelist read 75 89 … … 80 94 WRITE(numout,*) 81 95 WRITE(numout,*) 'dia_harm_init: Tidal harmonic analysis initialization' 96 # if defined key_3Ddiaharm 97 WRITE(numout,*) ' - 3D harmonic analysis of currents actovated (key_3Ddiaharm)' 98 #endif 82 99 WRITE(numout,*) '~~~~~~~ ' 83 100 ENDIF … … 113 130 114 131 nb_ana = 0 115 DO j k=1,jpmax_harmo116 DO j i=1,jpmax_harmo117 IF(TRIM(tname(j k)) == Wave(ji)%cname_tide) THEN132 DO jh=1,jpmax_harmo 133 DO jl=1,jpmax_harmo 134 IF(TRIM(tname(jh)) == Wave(jl)%cname_tide) THEN 118 135 nb_ana=nb_ana+1 119 136 ENDIF … … 134 151 135 152 ALLOCATE(name (nb_ana)) 136 DO j k=1,nb_ana137 DO j i=1,jpmax_harmo138 IF (TRIM(tname(j k)) == Wave(ji)%cname_tide) THEN139 name(j k) = ji153 DO jh=1,nb_ana 154 DO jl=1,jpmax_harmo 155 IF (TRIM(tname(jh)) .eq. Wave(jl)%cname_tide) THEN 156 name(jh) = jl 140 157 EXIT 141 158 END IF … … 157 174 ! Initialize temporary arrays: 158 175 ! ---------------------------- 159 ALLOCATE( ana_temp(jpi,jpj,2*nb_ana,3) ) 160 ana_temp(:,:,:,:) = 0._wp 176 # if defined key_3Ddiaharm 177 ALLOCATE( ana_temp( jpi, jpj, 2*nb_ana, 5, jpk ) ) 178 ana_temp(:,:,:,:,:) = 0._wp 179 # else 180 ALLOCATE( ana_temp( jpi, jpj, 2*nb_ana, 3 ) ) 181 ana_temp(:,:,:,: ) = 0._wp 182 #endif 161 183 162 184 END SUBROUTINE dia_harm_init … … 175 197 ! 176 198 INTEGER :: ji, jj, jh, jc, nhc 199 # if defined key_3Ddiaharm 200 INTEGER :: jk 201 # endif 177 202 REAL(wp) :: ztime, ztemp 178 203 !!-------------------------------------------------------------------- … … 184 209 185 210 ztime = (kt-nit000+1) * rdt 186 211 187 212 nhc = 0 188 213 DO jh = 1, nb_ana … … 192 217 & +(1.-MOD(jc,2))* ft(jh) *SIN(ana_freq(jh)*ztime + vt(jh) + ut(jh))) 193 218 219 ! ssh, ub, vb are stored at the last level of 5d array 194 220 DO jj = 1,jpj 195 221 DO ji = 1,jpi 196 ! Elevation 197 ana_temp(ji,jj,nhc,1) = ana_temp(ji,jj,nhc,1) + ztemp*sshn(ji,jj)*ssmask (ji,jj) 198 ana_temp(ji,jj,nhc,2) = ana_temp(ji,jj,nhc,2) + ztemp*un_b(ji,jj)*ssumask(ji,jj) 199 ana_temp(ji,jj,nhc,3) = ana_temp(ji,jj,nhc,3) + ztemp*vn_b(ji,jj)*ssvmask(ji,jj) 222 ! Elevation and currents 223 # if defined key_3Ddiaharm 224 ana_temp(ji,jj,nhc,1,jpk) = ana_temp(ji,jj,nhc,1,jpk) + ztemp*sshn(ji,jj)*ssmask (ji,jj) 225 ana_temp(ji,jj,nhc,2,jpk) = ana_temp(ji,jj,nhc,2,jpk) + ztemp*un_b(ji,jj)*ssumask(ji,jj) 226 ana_temp(ji,jj,nhc,3,jpk) = ana_temp(ji,jj,nhc,3,jpk) + ztemp*vn_b(ji,jj)*ssvmask(ji,jj) 227 228 ana_temp(ji,jj,nhc,5,jpk) = ana_temp(ji,jj,nhc,5,jpk) & 229 & + ztemp*bfrva(ji,jj)*vn(ji,jj,mbkv(ji,jj))*ssvmask(ji,jj) 230 ana_temp(ji,jj,nhc,4,jpk) = ana_temp(ji,jj,nhc,4,jpk) & 231 & + ztemp*bfrua(ji,jj)*un(ji,jj,mbku(ji,jj))*ssumask(ji,jj) 232 # else 233 ana_temp(ji,jj,nhc,1) = ana_temp(ji,jj,nhc,1) + ztemp*sshn(ji,jj)*ssmask (ji,jj) 234 ana_temp(ji,jj,nhc,2) = ana_temp(ji,jj,nhc,2) + ztemp*un_b(ji,jj)*ssumask(ji,jj) 235 ana_temp(ji,jj,nhc,3) = ana_temp(ji,jj,nhc,3) + ztemp*vn_b(ji,jj)*ssvmask(ji,jj) 236 # endif 200 237 END DO 201 238 END DO 202 239 ! 240 # if defined key_3Ddiaharm 241 ! 3d velocity and density: 242 DO jk=1,jpk-1 243 DO jj = 1,jpj 244 DO ji = 1,jpi 245 ! density and velocity 246 ana_temp(ji,jj,nhc,1,jk) = ana_temp(ji,jj,nhc,1,jk) + ztemp*rhd(ji,jj,jk) 247 ana_temp(ji,jj,nhc,2,jk) = ana_temp(ji,jj,nhc,2,jk) + ztemp*(un(ji,jj,jk)-un_b(ji,jj)) & 248 & *umask(ji,jj,jk) 249 ana_temp(ji,jj,nhc,3,jk) = ana_temp(ji,jj,nhc,3,jk) + ztemp*(vn(ji,jj,jk)-vn_b(ji,jj)) & 250 & *vmask(ji,jj,jk) 251 ana_temp(ji,jj,nhc,4,jk) = ana_temp(ji,jj,nhc,4,jk) + ztemp*wn(ji,jj,jk) 252 253 ana_temp(ji,jj,nhc,5,jk) = ana_temp(ji,jj,nhc,5,jk) - 0.5*grav*ztemp*(rhd(ji,jj,jk)+rhd(ji,jj,jk+1) )/max(rn2(ji,jj,jk),1.e-8_wp) 254 END DO 255 END DO 256 ENDDO 257 # endif 258 203 259 END DO 204 260 END DO … … 223 279 !!-------------------------------------------------------------------- 224 280 INTEGER :: ji, jj, jh, jc, jn, nhan, jl 281 # if defined key_3Ddiaharm 282 INTEGER :: jk 283 # endif 225 284 INTEGER :: ksp, kun, keq 226 285 REAL(wp) :: ztime, ztime_ini, ztime_end … … 238 297 nhan = (nitend_han-nit000_han+1)/nstep_han ! Number of dumps used for analysis 239 298 299 # if defined key_3Ddiaharm 300 ALLOCATE( out_eta(jpi,jpj,jpk,2*nb_ana), & 301 & out_u (jpi,jpj,jpk,2*nb_ana), & 302 & out_v (jpi,jpj,jpk,2*nb_ana), & 303 & out_w (jpi,jpj,jpk,2*nb_ana), & 304 & out_dzi(jpi,jpj,jpk,2*nb_ana) ) 305 # else 306 ALLOCATE( out_eta(jpi,jpj,2*nb_ana), & 307 & out_u (jpi,jpj,2*nb_ana), & 308 & out_v (jpi,jpj,2*nb_ana) ) 309 # endif 310 311 IF(lwp) WRITE(numout,*) 'ANA F OLD', ft 312 IF(lwp) WRITE(numout,*) 'ANA U OLD', ut 313 IF(lwp) WRITE(numout,*) 'ANA V OLD', vt 314 315 240 316 ninco = 2*nb_ana 241 242 317 ksp = 0 243 318 keq = 0 … … 260 335 nsparse = ksp 261 336 262 ! Elevation: 337 ! Density and Elevation: 338 # if defined key_3Ddiaharm 339 DO jk=1,jpk 340 # endif 263 341 DO jj = 1, jpj 264 342 DO ji = 1, jpi … … 268 346 DO jc = 1, 2 269 347 kun = kun + 1 348 # if defined key_3Ddiaharm 349 ztmp4(kun)=ana_temp(ji,jj,kun,1,jk) 350 # else 270 351 ztmp4(kun)=ana_temp(ji,jj,kun,1) 352 # endif 271 353 END DO 272 354 END DO … … 282 364 END DO 283 365 284 ALLOCATE( out_eta(jpi,jpj,2*nb_ana), &285 & out_u (jpi,jpj,2*nb_ana), &286 & out_v (jpi,jpj,2*nb_ana) )287 366 288 367 DO jj = 1, jpj … … 291 370 X1 = ana_amp(ji,jj,jh,1) 292 371 X2 =-ana_amp(ji,jj,jh,2) 293 out_eta(ji,jj,jh ) = X1 * tmask_i(ji,jj) 294 out_eta(ji,jj,jh+nb_ana) = X2 * tmask_i(ji,jj) 295 END DO 296 END DO 297 END DO 298 299 ! ubar: 372 # if defined key_3Ddiaharm 373 out_eta(ji,jj,jk,jh ) = X1 * tmask_i(ji,jj) 374 out_eta(ji,jj,jk,jh+nb_ana) = X2 * tmask_i(ji,jj) 375 # else 376 out_eta(ji,jj ,jh ) = X1 * tmask_i(ji,jj) 377 out_eta(ji,jj ,jh+nb_ana) = X2 * tmask_i(ji,jj) 378 # endif 379 END DO 380 END DO 381 END DO 382 383 ! u-component of velocity 300 384 DO jj = 1, jpj 301 385 DO ji = 1, jpi … … 305 389 DO jc = 1,2 306 390 kun = kun + 1 391 # if defined key_3Ddiaharm 392 ztmp4(kun)=ana_temp(ji,jj,kun,2,jk) 393 # else 307 394 ztmp4(kun)=ana_temp(ji,jj,kun,2) 395 # endif 308 396 END DO 309 397 END DO … … 325 413 X1= ana_amp(ji,jj,jh,1) 326 414 X2=-ana_amp(ji,jj,jh,2) 327 out_u(ji,jj, jh) = X1 * ssumask(ji,jj) 328 out_u(ji,jj,nb_ana+jh) = X2 * ssumask(ji,jj) 415 # if defined key_3Ddiaharm 416 out_u(ji,jj,jk, jh) = X1 * ssumask(ji,jj) 417 out_u(ji,jj,jk,nb_ana+jh) = X2 * ssumask(ji,jj) 418 # else 419 out_u(ji,jj, jh) = X1 * ssumask(ji,jj) 420 out_u(ji,jj, nb_ana+jh) = X2 * ssumask(ji,jj) 421 # endif 329 422 ENDDO 330 423 ENDDO 331 424 ENDDO 332 425 333 ! v bar:426 ! v- velocity 334 427 DO jj = 1, jpj 335 428 DO ji = 1, jpi … … 339 432 DO jc = 1,2 340 433 kun = kun + 1 434 # if defined key_3Ddiaharm 435 ztmp4(kun)=ana_temp(ji,jj,kun,3,jk) 436 # else 341 437 ztmp4(kun)=ana_temp(ji,jj,kun,3) 438 # endif 342 439 END DO 343 440 END DO … … 359 456 X1=ana_amp(ji,jj,jh,1) 360 457 X2=-ana_amp(ji,jj,jh,2) 361 out_v(ji,jj, jh)=X1 * ssvmask(ji,jj) 362 out_v(ji,jj,nb_ana+jh)=X2 * ssvmask(ji,jj) 363 END DO 364 END DO 365 END DO 458 # if defined key_3Ddiaharm 459 out_v(ji,jj,jk, jh)=X1 * ssvmask(ji,jj) 460 out_v(ji,jj,jk,nb_ana+jh)=X2 * ssvmask(ji,jj) 461 # else 462 out_v(ji,jj, jh)=X1 * ssvmask(ji,jj) 463 out_v(ji,jj, nb_ana+jh)=X2 * ssvmask(ji,jj) 464 # endif 465 END DO 466 END DO 467 END DO 468 469 # if defined key_3Ddiaharm 470 ! w- velocity 471 DO jj = 1, jpj 472 DO ji = 1, jpi 473 ! Fill input array 474 kun=0 475 DO jh = 1,nb_ana 476 DO jc = 1,2 477 kun = kun + 1 478 ztmp4(kun)=ana_temp(ji,jj,kun,4,jk) 479 END DO 480 END DO 481 482 CALL SUR_DETERMINE(jj+1) 483 484 ! Fill output array 485 DO jh = 1, nb_ana 486 ana_amp(ji,jj,jh,1)=ztmp7((jh-1)*2+1) 487 ana_amp(ji,jj,jh,2)=ztmp7((jh-1)*2+2) 488 END DO 489 490 END DO 491 END DO 492 493 DO jj = 1, jpj 494 DO ji = 1, jpi 495 DO jh = 1, nb_ana 496 X1=ana_amp(ji,jj,jh,1) 497 X2=-ana_amp(ji,jj,jh,2) 498 out_w(ji,jj,jk, jh)=X1 * tmask_i(ji,jj) 499 out_w(ji,jj,jk,nb_ana+jh)=X2 * tmask_i(ji,jj) 500 END DO 501 END DO 502 END DO 503 504 ! dzi- isopycnal displacements 505 DO jj = 1, jpj 506 DO ji = 1, jpi 507 ! Fill input array 508 kun=0 509 DO jh = 1,nb_ana 510 DO jc = 1,2 511 kun = kun + 1 512 ztmp4(kun)=ana_temp(ji,jj,kun,5,jk) 513 END DO 514 END DO 515 516 CALL SUR_DETERMINE(jj+1) 517 518 ! Fill output array 519 DO jh = 1, nb_ana 520 ana_amp(ji,jj,jh,1)=ztmp7((jh-1)*2+1) 521 ana_amp(ji,jj,jh,2)=ztmp7((jh-1)*2+2) 522 END DO 523 524 END DO 525 END DO 526 527 DO jj = 1, jpj 528 DO ji = 1, jpi 529 DO jh = 1, nb_ana 530 X1=ana_amp(ji,jj,jh,1) 531 X2=-ana_amp(ji,jj,jh,2) 532 out_dzi(ji,jj,jk, jh)=X1 * tmask_i(ji,jj) 533 out_dzi(ji,jj,jk,nb_ana+jh)=X2 * tmask_i(ji,jj) 534 END DO 535 END DO 536 END DO 537 538 ENDDO ! jk 539 # endif 366 540 367 541 CALL dia_wri_harm ! Write results in files … … 383 557 cdfile_name_V ! name of the file created (V-points) 384 558 INTEGER :: jh 385 !!---------------------------------------------------------------------- 559 560 # if defined key_3Ddiaharm 561 CHARACTER(LEN=lc) :: cdfile_name_W ! name of the file created (W-points) 562 INTEGER :: jk 563 REAL(WP), ALLOCATABLE, DIMENSION (:,:,:) :: z3real, z3im 564 REAL(WP), ALLOCATABLE, DIMENSION (:,:) :: z2real, z2im 565 # endif 566 !!---------------------------------------------------------------------- 567 568 #if defined key_dimgout 569 cdfile_name_T = TRIM(cexper)//'_Tidal_harmonics_gridT.dimgproc' 570 cdfile_name_U = TRIM(cexper)//'_Tidal_harmonics_gridU.dimgproc' 571 cdfile_name_V = TRIM(cexper)//'_Tidal_harmonics_gridV.dimgproc' 572 # if defined key_3Ddiaharm 573 cdfile_name_W = TRIM(cexper)//'_Tidal_harmonics_gridW.dimgproc' 574 # endif 575 #endif 386 576 387 577 IF(lwp) WRITE(numout,*) ' ' 388 578 IF(lwp) WRITE(numout,*) 'dia_wri_harm : Write harmonic analysis results' 579 #if defined key_dimgout 580 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ Output files: ', TRIM(cdfile_name_T) 581 IF(lwp) WRITE(numout,*) ' ', TRIM(cdfile_name_U) 582 IF(lwp) WRITE(numout,*) ' ', TRIM(cdfile_name_V) 583 # if defined key_3Ddiaharm 584 IF(lwp) WRITE(numout,*) ' ', TRIM(cdfile_name_W) 585 # endif 586 #endif 389 587 IF(lwp) WRITE(numout,*) ' ' 390 588 391 ! A) Elevation 589 # if defined key_3Ddiaharm 590 ALLOCATE( z3real(jpi,jpj,jpk),z3im(jpi,jpj,jpk),z2real(jpi,jpj),z2im(jpi,jpj)) 591 # endif 592 593 ! A) density and elevation 392 594 !///////////// 393 595 ! 596 #if defined key_dimgout 597 cltext='density amplitude and phase; elevation is level=jpk ' 598 CALL dia_wri_dimg(TRIM(cdfile_name_T), TRIM(cltext), out_eta, 2*nb_ana, '2') 599 #else 600 # if defined key_3Ddiaharm 601 z3real(:,:,:) = 0._wp; z3im(:,:,:) = 0._wp 602 # endif 394 603 DO jh = 1, nb_ana 604 # if defined key_3Ddiaharm 605 DO jk=1,jpkm1 606 z3real(:,:,jk)=out_eta(:,:,jk,jh) 607 z3im (:,:,jk)=out_eta(:,:,jk,jh+nb_ana) 608 ENDDO 609 z2real(:,:)=out_eta(:,:,jpk,jh); z2im(:,:)=out_eta(:,:,jpk,jh+nb_ana) 610 CALL iom_put( TRIM(tname(jh))//'x_ro', z3real(:,:,:) ) 611 CALL iom_put( TRIM(tname(jh))//'y_ro', z3im (:,:,:) ) 612 CALL iom_put( TRIM(tname(jh))//'x' , z2real(:,: ) ) 613 CALL iom_put( TRIM(tname(jh))//'y' , z2im (:,: ) ) 614 # else 615 WRITE(numout,*) "OUTPUT ORI: ", TRIM(tname(jh))//'x', ' & ', TRIM(tname(jh))//'y', MAXVAL(out_eta(:,:,jh)) 395 616 CALL iom_put( TRIM(tname(jh))//'x', out_eta(:,:,jh) ) 396 617 CALL iom_put( TRIM(tname(jh))//'y', out_eta(:,:,nb_ana+jh) ) 397 END DO 398 399 ! B) ubar 618 # endif 619 END DO 620 #endif 621 622 ! B) u 400 623 !///////// 401 624 ! 625 #if defined key_dimgout 626 cltext='3d u amplitude and phase; ubar is the last level' 627 CALL dia_wri_dimg(TRIM(cdfile_name_U), TRIM(cltext), out_u, 2*nb_ana, '2') 628 #else 629 # if defined key_3Ddiaharm 630 z3real(:,:,:) = 0._wp; z3im(:,:,:) = 0._wp 631 # endif 402 632 DO jh = 1, nb_ana 403 CALL iom_put( TRIM(tname(jh))//'x_u', out_u(:,:,jh) ) 404 CALL iom_put( TRIM(tname(jh))//'y_u', out_u(:,:,nb_ana+jh) ) 405 END DO 406 407 ! C) vbar 633 # if defined key_3Ddiaharm 634 DO jk=1,jpkm1 635 z3real(:,:,jk)=out_u(:,:,jk,jh) 636 z3im (:,:,jk)=out_u(:,:,jk,jh+nb_ana) 637 ENDDO 638 z2real(:,:)=out_u(:,:,jpk,jh); z2im(:,:)=out_u(:,:,jpk,jh+nb_ana) 639 CALL iom_put( TRIM(tname(jh))//'x_u3d', z3real(:,:,:) ) 640 CALL iom_put( TRIM(tname(jh))//'y_u3d', z3im (:,:,:) ) 641 CALL iom_put( TRIM(tname(jh))//'x_u2d', z2real(:,:) ) 642 CALL iom_put( TRIM(tname(jh))//'y_u2d', z2im (:,:) ) 643 z2real(:,:)=out_w(:,:,jpk,jh); z2im(:,:)=out_w(:,:,jpk,jh+nb_ana) 644 CALL iom_put( TRIM(tname(jh))//'x_tabx', z2real(:,:) ) 645 CALL iom_put( TRIM(tname(jh))//'y_tabx', z2im (:,:) ) 646 # else 647 CALL iom_put( TRIM(tname(jh))//'x_u2d', out_u(:,:,jh) ) 648 CALL iom_put( TRIM(tname(jh))//'y_u2d', out_u(:,:,nb_ana+jh) ) 649 # endif 650 END DO 651 #endif 652 653 ! C) v 408 654 !///////// 409 655 ! 656 #if defined key_dimgout 657 cltext='3d v amplitude and phase; vbar is the last level' 658 CALL dia_wri_dimg(TRIM(cdfile_name_V), TRIM(cltext), out_v, 2*nb_ana, '2') 659 #else 660 # if defined key_3Ddiaharm 661 z3real(:,:,:) = 0._wp; z3im(:,:,:) = 0._wp 662 # endif 410 663 DO jh = 1, nb_ana 411 CALL iom_put( TRIM(tname(jh))//'x_v', out_v(:,:,jh ) ) 412 CALL iom_put( TRIM(tname(jh))//'y_v', out_v(:,:,jh+nb_ana) ) 413 END DO 414 ! 664 # if defined key_3Ddiaharm 665 DO jk=1,jpkm1 666 z3real(:,:,jk)=out_v(:,:,jk,jh) 667 z3im (:,:,jk)=out_v(:,:,jk,jh+nb_ana) 668 ENDDO 669 z2real(:,:)=out_v(:,:,jpk,jh); z2im(:,:)=out_v(:,:,jpk,jh+nb_ana) 670 CALL iom_put( TRIM(tname(jh))//'x_v3d', z3real(:,:,:) ) 671 CALL iom_put( TRIM(tname(jh))//'y_v3d', z3im (:,:,:) ) 672 CALL iom_put( TRIM(tname(jh))//'x_v2d' , z2real(:,:) ) 673 CALL iom_put( TRIM(tname(jh))//'y_v2d' , z2im (:,:) ) 674 z2real(:,:)=out_dzi(:,:,jpk,jh); z2im(:,:)=out_dzi(:,:,jpk,jh+nb_ana) 675 CALL iom_put( TRIM(tname(jh))//'x_taby', z2real(:,:) ) 676 CALL iom_put( TRIM(tname(jh))//'y_taby', z2im (:,:) ) 677 # else 678 CALL iom_put( TRIM(tname(jh))//'x_v2d', out_v(:,:,jh ) ) 679 CALL iom_put( TRIM(tname(jh))//'y_v2d', out_v(:,:,jh+nb_ana) ) 680 # endif 681 END DO 682 683 #endif 684 ! D) w 685 # if defined key_3Ddiaharm 686 # if defined key_dimgout 687 cltext='3d w amplitude and phase; vort_baro is the last level' 688 CALL dia_wri_dimg(TRIM(cdfile_name_W), TRIM(cltext), out_w, 2*nb_ana, '2') 689 # else 690 DO jh = 1, nb_ana 691 DO jk=1,jpkm1 692 z3real(:,:,jk)=out_w(:,:,jk,jh) 693 z3im(:,:,jk)=out_w(:,:,jk,jh+nb_ana) 694 ENDDO 695 CALL iom_put( TRIM(tname(jh))//'x_w3d', z3real(:,:,:) ) 696 CALL iom_put( TRIM(tname(jh))//'y_w3d', z3im(:,:,:) ) 697 END DO 698 # endif 699 700 ! E) dzi + tau_bot 701 # if defined key_dimgout 702 cltext='dzi=g*ro/N2 amplitude and phase' 703 CALL dia_wri_dimg(TRIM(cdfile_name_W), TRIM(cltext), out_w, 2*nb_ana, '2') 704 # else 705 DO jh = 1, nb_ana 706 DO jk=1,jpkm1 707 z3real(:,:,jk)=out_dzi(:,:,jk,jh) 708 z3im(:,:,jk)=out_dzi(:,:,jk,jh+nb_ana) 709 ENDDO 710 CALL iom_put( TRIM(tname(jh))//'x_dzi', z3real(:,:,:) ) 711 CALL iom_put( TRIM(tname(jh))//'y_dzi', z3im(:,:,:) ) 712 END DO 713 # endif 714 # endif 715 716 ! 717 # if defined key_3Ddiaharm 718 DEALLOCATE(z3real, z3im, z2real,z2im) 719 # endif 720 415 721 END SUBROUTINE dia_wri_harm 416 722 -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r10684 r10685 28 28 USE bdy_oce 29 29 USE in_out_manager ! I/O manager 30 USE iom 30 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 32 USE lib_mpp ! Massively Parallel Processing library … … 161 162 ! ------------------------ 162 163 IF ( ln_bdy .AND. ln_mask_file ) THEN 164 CALL iom_open( cn_mask_file, inum ) 165 CALL iom_get ( inum, jpdom_data, 'bdy_msk', bdytmask(:,:) ) 166 CALL iom_close( inum ) 163 167 DO jk = 1, jpkm1 164 168 DO jj = 1, jpj -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
r10684 r10685 23 23 USE wrk_nemo ! Memory allocation 24 24 USE timing ! Timing 25 USE iom 25 26 26 27 IMPLICIT NONE … … 31 32 32 33 LOGICAL , PUBLIC :: ln_tsd_init !: T & S data flag 34 LOGICAL , PUBLIC :: ln_tsd_interp !: vertical interpolation flag 33 35 LOGICAL , PUBLIC :: ln_tsd_tradmp !: internal damping toward input data flag 34 36 35 37 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_tsd ! structure of input SST (file informations, fields read) 38 INTEGER :: jpk_init , inum_dta 39 INTEGER :: id ,linum ! local integers 40 INTEGER :: zdim(4) 36 41 37 42 !!---------------------------------------------------------------------- … … 53 58 LOGICAL, INTENT(in), OPTIONAL :: ld_tradmp ! force the initialization when tradp is used 54 59 ! 55 INTEGER :: ios, ierr0, ierr1, ierr2, ierr3 ! local integers60 INTEGER :: ios, ierr0, ierr1, ierr2, ierr3, ierr4, ierr5 ! local integers 56 61 !! 57 62 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 58 TYPE(FLD_N), DIMENSION( jpts) :: slf_i ! array of namelist informations on the fields to read 59 TYPE(FLD_N) :: sn_tem, sn_sal 63 TYPE(FLD_N), DIMENSION(jpts+2):: slf_i ! array of namelist informations on the fields to read 64 TYPE(FLD_N) :: sn_tem, sn_sal, sn_dep, sn_msk 65 60 66 !! 61 NAMELIST/namtsd/ ln_tsd_init, ln_tsd_ tradmp, cn_dir, sn_tem, sn_sal67 NAMELIST/namtsd/ ln_tsd_init, ln_tsd_interp, ln_tsd_tradmp, cn_dir, sn_tem, sn_sal, sn_dep, sn_msk 62 68 !!---------------------------------------------------------------------- 63 69 ! … … 65 71 ! 66 72 ! Initialisation 67 ierr0 = 0 ; ierr1 = 0 ; ierr2 = 0 ; ierr3 = 0 73 ierr0 = 0 ; ierr1 = 0 ; ierr2 = 0 ; ierr3 = 0 ; ierr4 = 0 ; ierr5 = 0 68 74 ! 69 75 REWIND( numnam_ref ) ! Namelist namtsd in reference namelist : … … 84 90 WRITE(numout,*) ' Namelist namtsd' 85 91 WRITE(numout,*) ' Initialisation of ocean T & S with T &S input data ln_tsd_init = ', ln_tsd_init 92 WRITE(numout,*) ' iInterpolation of initial conditions in the vertical ln_tsd_interp = ', ln_tsd_interp 86 93 WRITE(numout,*) ' damping of ocean T & S toward T &S input data ln_tsd_tradmp = ', ln_tsd_tradmp 87 94 WRITE(numout,*) … … 97 104 ln_tsd_init = .FALSE. 98 105 ENDIF 106 IF( ln_tsd_interp .AND. ln_tsd_tradmp ) THEN 107 CALL ctl_stop( 'dta_tsd_init: Tracer damping and vertical interpolation not yet configured' ) ; RETURN 108 ENDIF 109 IF( ln_tsd_interp .AND. LEN(TRIM(sn_msk%wname)) > 0 ) THEN 110 CALL ctl_stop( 'dta_tsd_init: Using vertical interpolation and weights files not recommended' ) ; RETURN 111 ENDIF 99 112 ! 100 113 ! ! allocate the arrays (if necessary) 101 114 IF( ln_tsd_init .OR. ln_tsd_tradmp ) THEN 102 115 ! 103 ALLOCATE( sf_tsd(jpts), STAT=ierr0 ) 116 IF( ln_tsd_interp ) THEN 117 ALLOCATE( sf_tsd(jpts+2), STAT=ierr0 ) ! to carry the addtional depth information 118 ELSE 119 ALLOCATE( sf_tsd(jpts ), STAT=ierr0 ) 120 ENDIF 104 121 IF( ierr0 > 0 ) THEN 105 122 CALL ctl_stop( 'dta_tsd_init: unable to allocate sf_tsd structure' ) ; RETURN 106 123 ENDIF 107 124 ! 108 ALLOCATE( sf_tsd(jp_tem)%fnow(jpi,jpj,jpk) , STAT=ierr0 ) 109 IF( sn_tem%ln_tint ) ALLOCATE( sf_tsd(jp_tem)%fdta(jpi,jpj,jpk,2) , STAT=ierr1 ) 110 ALLOCATE( sf_tsd(jp_sal)%fnow(jpi,jpj,jpk) , STAT=ierr2 ) 111 IF( sn_sal%ln_tint ) ALLOCATE( sf_tsd(jp_sal)%fdta(jpi,jpj,jpk,2) , STAT=ierr3 ) 112 ! 113 IF( ierr0 + ierr1 + ierr2 + ierr3 > 0 ) THEN 125 IF( ln_tsd_interp ) THEN 126 CALL iom_open ( trim(cn_dir) // trim(sn_dep%clname), inum_dta ) 127 id = iom_varid( inum_dta, sn_dep%clvar, zdim ) 128 jpk_init = zdim(3) 129 IF(lwp) WRITE(numout,*) 'Dimension of veritcal coordinate in ICs: ', jpk_init 130 CALL iom_close( inum_dta ) ! Close the input file 131 ! 132 ALLOCATE( sf_tsd(jp_tem)%fnow(jpi,jpj,jpk_init ) , STAT=ierr0 ) 133 IF( sn_tem%ln_tint ) ALLOCATE( sf_tsd(jp_tem)%fdta(jpi,jpj,jpk_init,2) , STAT=ierr1 ) 134 ALLOCATE( sf_tsd(jp_sal)%fnow(jpi,jpj,jpk_init ) , STAT=ierr2 ) 135 IF( sn_sal%ln_tint ) ALLOCATE( sf_tsd(jp_sal)%fdta(jpi,jpj,jpk_init,2) , STAT=ierr3 ) 136 ALLOCATE( sf_tsd(jp_dep)%fnow(jpi,jpj,jpk_init ) , STAT=ierr4 ) 137 ALLOCATE( sf_tsd(jp_msk)%fnow(jpi,jpj,jpk_init ) , STAT=ierr5 ) 138 ELSE 139 ALLOCATE( sf_tsd(jp_tem)%fnow(jpi,jpj,jpk) , STAT=ierr0 ) 140 IF( sn_tem%ln_tint ) ALLOCATE( sf_tsd(jp_tem)%fdta(jpi,jpj,jpk,2) , STAT=ierr1 ) 141 ALLOCATE( sf_tsd(jp_sal)%fnow(jpi,jpj,jpk) , STAT=ierr2 ) 142 IF( sn_sal%ln_tint ) ALLOCATE( sf_tsd(jp_sal)%fdta(jpi,jpj,jpk,2) , STAT=ierr3 ) 143 ENDIF ! ln_tsd_interp 144 145 ! 146 IF( ierr0 + ierr1 + ierr2 + ierr3 + ierr4 + ierr5 > 0 ) THEN 114 147 CALL ctl_stop( 'dta_tsd : unable to allocate T & S data arrays' ) ; RETURN 115 148 ENDIF 116 149 ! ! fill sf_tsd with sn_tem & sn_sal and control print 117 150 slf_i(jp_tem) = sn_tem ; slf_i(jp_sal) = sn_sal 151 IF( ln_tsd_interp ) slf_i(jp_dep) = sn_dep ; slf_i(jp_msk) = sn_msk 118 152 CALL fld_fill( sf_tsd, slf_i, cn_dir, 'dta_tsd', 'Temperature & Salinity data', 'namtsd', no_print ) 119 153 ! … … 143 177 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: ptsd ! T & S data 144 178 ! 145 INTEGER :: ji, jj, jk, jl, jk k! dummy loop indicies146 INTEGER :: ik, il0, il1, ii0, ii1, ij0, ij1 ! local integers179 INTEGER :: ji, jj, jk, jl, jk_init ! dummy loop indicies 180 INTEGER :: ik, il0, il1, ii0, ii1, ij0, ij1 ! local integers 147 181 REAL(wp):: zl, zi 148 REAL(wp), POINTER, DIMENSION(:) :: ztp, zsp ! 1D workspace149 182 !!---------------------------------------------------------------------- 150 183 ! … … 181 214 !!gm end 182 215 ! 183 ptsd(:,:,:,jp_tem) = sf_tsd(jp_tem)%fnow(:,:,:) ! NO mask 184 ptsd(:,:,:,jp_sal) = sf_tsd(jp_sal)%fnow(:,:,:) 185 ! 186 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! 187 ! 188 CALL wrk_alloc( jpk, ztp, zsp ) 189 ! 190 IF( kt == nit000 .AND. lwp )THEN 191 WRITE(numout,*) 192 WRITE(numout,*) 'dta_tsd: interpolates T & S data onto the s- or mixed s-z-coordinate mesh' 193 ENDIF 194 ! 195 DO jj = 1, jpj ! vertical interpolation of T & S 196 DO ji = 1, jpi 197 DO jk = 1, jpk ! determines the intepolated T-S profiles at each (i,j) points 216 IF( kt == nit000 .AND. lwp )THEN 217 WRITE(numout,*) 218 WRITE(numout,*) 'dta_tsd: interpolates T & S data onto current mesh' 219 ENDIF 220 ! 221 IF( ln_tsd_interp ) THEN ! probably should use pointers in the following to make more readable 222 ! 223 DO jk = 1, jpk ! determines the intepolated T-S profiles at each (i,j) points 224 DO jj= 1, jpj 225 DO ji= 1, jpi 198 226 zl = gdept_0(ji,jj,jk) 199 IF( zl < gdept_1d(1 ) ) THEN ! above the first level of data 200 ztp(jk) = ptsd(ji,jj,1 ,jp_tem) 201 zsp(jk) = ptsd(ji,jj,1 ,jp_sal) 202 ELSEIF( zl > gdept_1d(jpk) ) THEN ! below the last level of data 203 ztp(jk) = ptsd(ji,jj,jpkm1,jp_tem) 204 zsp(jk) = ptsd(ji,jj,jpkm1,jp_sal) 205 ELSE ! inbetween : vertical interpolation between jkk & jkk+1 206 DO jkk = 1, jpkm1 ! when gdept(jkk) < zl < gdept(jkk+1) 207 IF( (zl-gdept_1d(jkk)) * (zl-gdept_1d(jkk+1)) <= 0._wp ) THEN 208 zi = ( zl - gdept_1d(jkk) ) / (gdept_1d(jkk+1)-gdept_1d(jkk)) 209 ztp(jk) = ptsd(ji,jj,jkk,jp_tem) + ( ptsd(ji,jj,jkk+1,jp_tem) - ptsd(ji,jj,jkk,jp_tem) ) * zi 210 zsp(jk) = ptsd(ji,jj,jkk,jp_sal) + ( ptsd(ji,jj,jkk+1,jp_sal) - ptsd(ji,jj,jkk,jp_sal) ) * zi 227 IF( zl < sf_tsd(jp_dep)%fnow(ji,jj,1) ) THEN ! above the first level of data 228 ptsd(ji,jj,jk,jp_tem) = sf_tsd(jp_tem)%fnow(ji,jj,1) 229 ptsd(ji,jj,jk,jp_sal) = sf_tsd(jp_sal)%fnow(ji,jj,1) 230 ELSEIF( zl > sf_tsd(jp_dep)%fnow(ji,jj,jpk_init) ) THEN ! below the last level of data 231 ptsd(ji,jj,jk,jp_tem) = sf_tsd(jp_tem)%fnow(ji,jj,jpk_init) 232 ptsd(ji,jj,jk,jp_sal) = sf_tsd(jp_sal)%fnow(ji,jj,jpk_init) 233 ELSE ! inbetween : vertical interpolation between jk_init & jk_init+1 234 DO jk_init = 1, jpk_init-1 ! when gdept(jk_init) < zl < gdept(jk_init+1) 235 IF( sf_tsd(jp_msk)%fnow(ji,jj,jk_init+1) == 0 ) THEN ! if there is no data fill down 236 sf_tsd(jp_tem)%fnow(ji,jj,jk_init+1) = sf_tsd(jp_tem)%fnow(ji,jj,jk_init) 237 sf_tsd(jp_sal)%fnow(ji,jj,jk_init+1) = sf_tsd(jp_sal)%fnow(ji,jj,jk_init) 238 ENDIF 239 IF( (zl-sf_tsd(jp_dep)%fnow(ji,jj,jk_init)) * (zl-sf_tsd(jp_dep)%fnow(ji,jj,jk_init+1)) <= 0._wp ) THEN 240 zi = ( zl - sf_tsd(jp_dep)%fnow(ji,jj,jk_init) ) / & 241 & (sf_tsd(jp_dep)%fnow(ji,jj,jk_init+1)-sf_tsd(jp_dep)%fnow(ji,jj,jk_init)) 242 ptsd(ji,jj,jk,jp_tem) = sf_tsd(jp_tem)%fnow(ji,jj,jk_init) + & 243 & (sf_tsd(jp_tem)%fnow(ji,jj,jk_init+1)-sf_tsd(jp_tem)%fnow(ji,jj,jk_init)) * zi 244 ptsd(ji,jj,jk,jp_sal) = sf_tsd(jp_sal)%fnow(ji,jj,jk_init) + & 245 & (sf_tsd(jp_sal)%fnow(ji,jj,jk_init+1)-sf_tsd(jp_sal)%fnow(ji,jj,jk_init)) * zi 211 246 ENDIF 212 247 END DO 213 248 ENDIF 214 END DO 215 DO jk = 1, jpkm1 216 ptsd(ji,jj,jk,jp_tem) = ztp(jk) * tmask(ji,jj,jk) ! mask required for mixed zps-s-coord 217 ptsd(ji,jj,jk,jp_sal) = zsp(jk) * tmask(ji,jj,jk) 218 END DO 219 ptsd(ji,jj,jpk,jp_tem) = 0._wp 220 ptsd(ji,jj,jpk,jp_sal) = 0._wp 221 END DO 249 ENDDO 250 ENDDO 222 251 END DO 223 ! 224 CALL wrk_dealloc( jpk, ztp, zsp)225 !252 ! 253 ptsd(:,:,:,jp_tem) = ptsd(:,:,:,jp_tem) *tmask(:,:,:) 254 ptsd(:,:,:,jp_sal) = ptsd(:,:,:,jp_sal) *tmask(:,:,:) 226 255 ELSE !== z- or zps- coordinate ==! 227 256 ! 228 ptsd(:,:,:,jp_tem) = ptsd(:,:,:,jp_tem) * tmask(:,:,:)! Mask229 ptsd(:,:,:,jp_sal) = ptsd(:,:,:,jp_sal)* tmask(:,:,:)257 ptsd(:,:,:,jp_tem) = sf_tsd(jp_tem)%fnow(:,:,:) * tmask(:,:,:) ! Mask 258 ptsd(:,:,:,jp_sal) = sf_tsd(jp_sal)%fnow(:,:,:) * tmask(:,:,:) 230 259 ! 231 260 IF( ln_zps ) THEN ! zps-coordinate (partial steps) interpolation at the last ocean level … … 257 286 DEALLOCATE( sf_tsd(jp_sal)%fnow ) ! S arrays in the structure 258 287 IF( sf_tsd(jp_sal)%ln_tint ) DEALLOCATE( sf_tsd(jp_sal)%fdta ) 288 IF( ln_tsd_interp ) DEALLOCATE( sf_tsd(jp_dep)%fnow ) ! T arrays in the structure 289 IF( ln_tsd_interp ) DEALLOCATE( sf_tsd(jp_msk)%fnow ) ! T arrays in the structure 259 290 DEALLOCATE( sf_tsd ) ! the structure itself 260 291 ENDIF -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90
r10684 r10685 16 16 USE ioipsl ! NetCDF IPSL library 17 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 USE bdytides 18 19 19 20 IMPLICIT NONE … … 98 99 99 100 DO jk = 1, nb_harmo 100 zcons = 0.7_wp * Wave(ntide(jk))%equitide * ftide(jk) 101 ! love number now provides in tide namelist 102 zcons = dn_love_number * Wave(ntide(jk))%equitide * ftide(jk) 101 103 DO ji = 1, jpi 102 104 DO jj = 1, jpj … … 109 111 IF ( Wave(ntide(jk))%nutide == 1 ) THEN ; zcs = zcons * SIN( 2._wp*zlat ) 110 112 ELSEIF( Wave(ntide(jk))%nutide == 2 ) THEN ; zcs = zcons * COS( zlat )**2 113 ! Add tide potential for long period tides 114 ELSEIF( Wave(ntide(jk))%nutide == 0 ) THEN ; zcs = zcons * (0.5_wp-1.5_wp*SIN(zlat)**2._wp) 111 115 ELSE ; zcs = 0._wp 112 116 ENDIF -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/SBC/tide_mod.F90
r10684 r10685 16 16 PUBLIC tide_init_Wave ! called by tideini and diaharm modules 17 17 18 # if defined key_FES14_tides 19 INTEGER, PUBLIC, PARAMETER :: jpmax_harmo = 34 !: maximum number of harmonic 20 # else 18 21 INTEGER, PUBLIC, PARAMETER :: jpmax_harmo = 19 !: maximum number of harmonic 22 # endif 19 23 20 24 TYPE, PUBLIC :: tide … … 41 45 42 46 SUBROUTINE tide_init_Wave 47 # if defined key_FES14_tides 48 # include "tide_FES14.h90" 49 # else 43 50 # include "tide.h90" 51 # endif 44 52 END SUBROUTINE tide_init_Wave 45 53 … … 331 339 zf = zf * zf1 * zf1 332 340 ! 341 CASE( 20 ) !== formule 20, compound waves ( 78 x 78 x 78 x 78 ) 342 zf1 = nodal_factort(78) 343 zf = zf1 * zf1 * zf1 * zf1 344 ! 333 345 CASE( 73 ) !== formule 73 334 346 zs = sin(sh_I) -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90
r10684 r10685 31 31 INTEGER , PUBLIC :: kt_tide !: 32 32 REAL(wp), PUBLIC :: rdttideramp !: 33 33 REAL(wp), PUBLIC :: dn_love_number !: 34 34 INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide !: 35 35 … … 49 49 INTEGER :: ios ! Local integer output status for namelist read 50 50 ! 51 NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_tide_ramp, rdttideramp, clname51 NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_tide_ramp, rdttideramp, dn_love_number, clname 52 52 !!---------------------------------------------------------------------- 53 53 ! … … 70 70 WRITE(numout,*) ' Use tidal components : ln_tide = ', ln_tide 71 71 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot = ', ln_tide_pot 72 WRITE(numout,*) ' nb_harmo = ', nb_harmo73 72 WRITE(numout,*) ' ln_tide_ramp = ', ln_tide_ramp 74 WRITE(numout,*) ' rdttideramp = ', rdttideramp73 WRITE(numout,*) ' dn_love_number = ', dn_love_number 75 74 ENDIF 76 75 ELSE … … 89 88 END DO 90 89 END DO 91 ! 90 IF (ln_tide .and.lwp) WRITE(numout,*) ' nb_harmo = ', nb_harmo 91 92 92 ! Ensure that tidal components have been set in namelist_cfg 93 93 IF( nb_harmo == 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
r10684 r10685 68 68 INTEGER, PUBLIC, PARAMETER :: jp_tem = 1 !: indice for temperature 69 69 INTEGER, PUBLIC, PARAMETER :: jp_sal = 2 !: indice for salinity 70 INTEGER, PUBLIC, PARAMETER :: jp_dep = 3 !: indice for depth 71 INTEGER, PUBLIC, PARAMETER :: jp_msk = 4 !: indice for depth 70 72 71 73 !!---------------------------------------------------------------------- -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/step.F90
r10684 r10685 238 238 CALL dia_ar5( kstp ) ! ar5 diag 239 239 IF( lk_diaharm ) CALL dia_harm( kstp ) ! Tidal harmonic analysis 240 IF( lk_diaharm_fast ) & 241 & CALL dia_harm_fast( kstp ) ! Tidal harmonic analysis - restart and faster version 240 242 CALL dia_wri( kstp ) ! ocean model: outputs 241 243 ! -
branches/UKMO/r8395_India_uncoupled/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r10684 r10685 87 87 USE diahsb ! heat, salt and volume budgets (dia_hsb routine) 88 88 USE diaharm 89 USE diaharm_fast ! harmonic analysis of tides (harm_ana routine) 89 90 USE diacfl 90 91 USE flo_oce ! floats variables
Note: See TracChangeset
for help on using the changeset viewer.