Changeset 15740
- Timestamp:
- 2022-03-08T13:28:11+01:00 (2 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/BDY/bdydta.F90
r15729 r15740 98 98 TYPE(OBC_DATA) , POINTER :: dta_alias ! short cut 99 99 TYPE(FLD), DIMENSION(:), POINTER :: bf_alias 100 101 !JT 102 LOGICAL :: verbose 103 !JT 100 104 !!--------------------------------------------------------------------------- 101 105 ! … … 292 296 293 297 !! JT 294 298 verbose = .FALSE. 295 299 296 300 297 WRITE(*,*) 'JTsshw:',jbdy,nimpp,njmpp,idx_bdy(jbdy)%nblenrim(igrd) 298 299 igrd = 1 300 DO ib = 1, idx_bdy(jbdy)%nblenrim(igrd) 301 ii = idx_bdy(jbdy)%nbi(ib,igrd) 302 ij = idx_bdy(jbdy)%nbj(ib,igrd) 303 WRITE(*,*) 'JTsshv:',jbdy,nimpp+ii,njmpp+ij,dta_alias%ssh(ib) , tmask(ii,ij,1), sshn(ii,ij) 304 END DO 305 306 307 !! JT I think this need to go here. The previous location didn't have an affect on the model. 308 ! I think when time splitting, ln_dynspg_ts, you weren't seeing this effect, so trying it before the time splitting. 309 ! 310 ! 311 ! davbyr - add a shift to the boundary + free elevation Enda, JT from NEMO RAN 3.6 312 313 314 IF(lwp) WRITE(numout,*) 'bdydta nambdy_ssh: lneed_ssh',kt, jbdy, dta_bdy(jbdy)%lneed_ssh, idx_bdy(jbdy)%nblenrim(igrd) 301 if ( verbose ) THEN 302 303 WRITE(*,*) 'JTsshw:',jbdy,nimpp,njmpp,idx_bdy(jbdy)%nblenrim(igrd) 304 305 igrd = 1 306 DO ib = 1, idx_bdy(jbdy)%nblenrim(igrd) 307 ii = idx_bdy(jbdy)%nbi(ib,igrd) 308 ij = idx_bdy(jbdy)%nbj(ib,igrd) 309 if ( verbose ) WRITE(*,*) 'JTsshv:',jbdy,nimpp+ii,njmpp+ij,dta_alias%ssh(ib) , tmask(ii,ij,1), sshn(ii,ij) 310 END DO 311 312 !! JT I think this need to go here. The previous location didn't have an affect on the model. 313 ! I think when time splitting, ln_dynspg_ts, you weren't seeing this effect, so trying it before the time splitting. 314 ! 315 ! 316 ! davbyr - add a shift to the boundary + free elevation Enda, JT from NEMO RAN 3.6 317 318 319 IF(lwp .AND. verbose) WRITE(numout,*) 'bdydta nambdy_ssh: lneed_ssh',kt, jbdy, dta_bdy(jbdy)%lneed_ssh, idx_bdy(jbdy)%nblenrim(igrd) 320 ENDIF 315 321 316 322 … … 326 332 327 333 IF( .NOT. dta_bdy(jbdy)%lforced_ssh ) THEN 328 WRITE(*,*) 'bdydta nambdy_ssh: NOT lforced_ssh == True',kt, jbdy, dta_bdy(jbdy)%lforced_ssh334 if ( verbose ) WRITE(*,*) 'bdydta nambdy_ssh: NOT lforced_ssh == True',kt, jbdy, dta_bdy(jbdy)%lforced_ssh 329 335 330 336 igrd = 1 … … 332 338 ii = idx_bdy(jbdy)%nbi(ib,igrd) 333 339 ij = idx_bdy(jbdy)%nbj(ib,igrd) 334 WRITE(*,*) 'JTssh:',jbdy, nproc,narea,ii,ij, dta_alias%ssh(ib), dta_bdy(jbdy)%ssh(ib), sshn(ii,ij) * tmask(ii,ij,1), sshn(ii,ij), tmask(ii,ij,1)340 if ( verbose ) WRITE(*,*) 'JTssh:',jbdy, nproc,narea,ii,ij, dta_alias%ssh(ib), dta_bdy(jbdy)%ssh(ib), sshn(ii,ij) * tmask(ii,ij,1), sshn(ii,ij), tmask(ii,ij,1) 335 341 dta_alias%ssh(ib) = sshn(ii,ij) * tmask(ii,ij,1) 336 342 dta_bdy(jbdy)%ssh(ib) = sshn(ii,ij) * tmask(ii,ij,1) … … 338 344 339 345 ELSE 340 WRITE(*,*) 'bdydta nambdy_ssh: NOT lforced_ssh == False',kt, jbdy, dta_bdy(jbdy)%lforced_ssh346 if ( verbose ) WRITE(*,*) 'bdydta nambdy_ssh: NOT lforced_ssh == False',kt, jbdy, dta_bdy(jbdy)%lforced_ssh 341 347 END IF !.NOT. dta_bdy(jbdy)%lforced_ssh 342 348 -
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/SBC/tide_mod.F90
r15729 r15740 58 58 LOGICAL :: ln_astro_verbose 59 59 !LOGICAL :: ln_tide_360_cal 60 !LOGICAL :: ln_tide_drift_time_cont_manual61 60 LOGICAL :: ln_tide_drift ! Do we want to run with "drifting" tides? (Namelist) 62 61 LOGICAL :: ln_tide_compress ! Do we want to run with "compressed" tides? (Namelist) … … 109 108 WRITE(numout,*) " tides360: USE ln_tide_compress WITH CARE. INCOMPLETE." 110 109 WRITE(numout,*) " tides360: Increase output verbosity: ln_astro_verbose = ",ln_astro_verbose 111 !WRITE(numout,*) " tides360: Calculate time between origin and gregorian and 360 manually: ln_tide_drift_time_cont_manual = ",ln_tide_drift_time_cont_manual112 110 WRITE(numout,*) " tides360: 360 day origin date year: nn_tide_orig_yr = ",nn_tide_orig_yr 113 111 WRITE(numout,*) " tides360: 360 day origin date month: nn_tide_orig_mn = ",nn_tide_orig_mn … … 165 163 ! 166 164 167 ! INTEGER :: ios168 169 170 ! ln_tide_drift = .FALSE.171 ! ln_tide_compress = .FALSE.172 173 ! NAMELIST/nam_tides360/ ln_tide_drift,ln_tide_compress,ln_astro_verbose,&174 ! & nn_tide_orig_yr,nn_tide_orig_mn,nn_tide_orig_dy175 176 ! ! read in Namelist.177 ! !!----------------------------------------------------------------------178 ! !179 ! REWIND ( numnam_ref ) ! Read Namelist nam_diatmb in referdiatmbence namelist : TMB diagnostics180 ! READ ( numnam_ref, nam_tides360, IOSTAT=ios, ERR= 901 )181 !901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_tides360 in reference namelist' )182 183 ! REWIND( numnam_cfg ) ! Namelist nam_diatmb in configuration namelist TMB diagnostics184 ! READ ( numnam_cfg, nam_tides360, IOSTAT = ios, ERR = 902 )185 !902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_tides360 in configuration namelist' )186 ! IF(lwm) WRITE ( numond, nam_tides360 )187 188 189 ! IF( lwp ) THEN190 ! WRITE(numout,*) " "191 ! WRITE(numout,*) "tide_harmo: nam_tides360 - 360 day tides "192 ! WRITE(numout,*) "~~~~~~~~~~~~~~~~~~~~~"193 ! WRITE(numout,*) " tides360: allow tides to drift through year: ln_tide_drift = ",ln_tide_drift194 ! WRITE(numout,*) " tides360: Compress tides, so around a 360 day year: ln_tide_compress = ",ln_tide_compress195 ! WRITE(numout,*) " tides360: USE ln_tide_compress WITH CARE. INCOMPLETE."196 ! WRITE(numout,*) " tides360: Increase output verbosity: ln_astro_verbose = ",ln_astro_verbose197 ! !WRITE(numout,*) " tides360: Calculate time between origin and gregorian and 360 manually: ln_tide_drift_time_cont_manual = ",ln_tide_drift_time_cont_manual198 ! WRITE(numout,*) " tides360: 360 day origin date year: nn_tide_orig_yr = ",nn_tide_orig_yr199 ! WRITE(numout,*) " tides360: 360 day origin date month: nn_tide_orig_mn = ",nn_tide_orig_mn200 ! WRITE(numout,*) " tides360: 360 day origin date day: nn_tide_orig_dy = ",nn_tide_orig_dy201 ! WRITE(numout,*) " "202 ! ENDIF203 204 !205 ! IF( nleapy == 30 ) THEN206 ! IF ( ln_tide_drift .AND. ln_tide_compress ) THEN207 ! CALL ctl_stop( 'tide_harmo: nam_tides360: if 360 day calendar ln_tide_drift and ln_tide_compress cannot be true' )208 ! ENDIF209 !210 211 ! IF ( ln_tide_drift ) THEN212 ! WRITE(numout,*) " tides360: Tides continuous so equinoctal tides drift through the year,"213 ! WRITE(numout,*) " as the S2-K2 beating occurs 5 days later every year."214 ! ENDIF215 216 ! IF ( ln_tide_compress ) THEN217 ! WRITE(numout,*) " tides360: The Tropical Year (and so some tidal periods) are compressed,"218 ! WRITE(numout,*) " so the tides repeat with an annual cycle, so the "219 ! WRITE(numout,*) " the S2-K2 beating is fixed relative to the calendar, but the "220 ! WRITE(numout,*) " M2 period varies slightly."221 ! WRITE(numout,*) " Use with care, as this requires more work."222 ! ENDIF223 224 ! IF ( ( .NOT. ln_tide_drift ) .AND. ( .NOT. ln_tide_compress ) ) THEN225 ! WRITE(numout,*) " tides360: Use the default NEMO tide code, where the tides are reset "226 ! WRITE(numout,*) " at the beginning of each month, leading to a slight discontinuity"227 ! WRITE(numout,*) " in the tides, and making tidal analysis difficult."228 ! ENDIF229 230 ! ELSE231 ! WRITE(numout,*) " tides360: Gregorian calendar so using standard tides"232 ! ENDIF233 165 234 166 CALL astronomic_angle … … 462 394 463 395 464 !IF (ln_tide_drift_time_cont_manual) THEN 465 466 467 468 ! IF (ln_astro_verbose .AND. lwp) THEN 469 ! WRITE(numout,*) 'astro: yr_360,yr_org,((yr_360-yr_org)*360)', yr_360,yr_org,((yr_360-yr_org)*360) 470 ! WRITE(numout,*) 'astro: mn_360,mn_org,((mn_360-mn_org)*30)', mn_360,mn_org,((mn_360-mn_org)*30) 471 ! WRITE(numout,*) 'astro: dy_360,dy_org,(dy_360-dy_org)', dy_360,dy_org,(dy_360-dy_org) 472 ! ENDIF 473 ! 474 ! ! how many days from 1900 in the 360 day calendar 475 ! days_since_origin = ((yr_360-yr_org)*360) + ((mn_360-mn_org)*30) + (dy_360-dy_org) 476 ! 477 ! ! first guess of what year this would be for the same numbers of days from 1/1/1900 in a gregorian calendar 478 ! init_yr = yr_org + days_since_origin/365 479 ! 480 ! ! was the initial estimated year a leap year? how many days in this year? 481 ! day_in_init_yr = 365 482 ! if (MOD(init_yr,4) == 0) day_in_init_yr = 366 483 ! 484 ! 485 ! 486 ! !CALL ymds2ju_JT (yr_org, mn_org, dy_org, 0.0, fjulday_org,360.) 487 ! 488 ! !IF (ln_astro_verbose) THEN 489 ! ! IF(lwp) THEN 490 ! ! WRITE(numout,*) 'astro: ymds2ju_JT yr_org, mn_org, dy_org,fjulday_org', yr_org, mn_org, dy_org,fjulday_org 491 ! ! ENDIF 492 ! !ENDIF 493 ! 494 ! 495 ! !CALL ymds2ju( yr_org, mn_org, dy_org, 0.0, fjulday_org ) ! we assume that we start run at 00:00 496 ! !IF( ABS(fjulday_org - REAL(NINT(fjulday_org),wp)) < 0.1 / rday ) fjulday_org = REAL(NINT(fjulday_org),wp) ! avoid truncation error 497 ! !fjulday_org = fjulday_org + 1. ! move back to the day at nit000 (and not at nit000 - 1) 498 ! 499 ! !days_since_origin_ymds2ju_int = AINT(fjulday - fjulday_org) 500 ! 501 ! IF (ln_astro_verbose .AND. lwp) THEN 502 ! WRITE(numout,*) 'astro: days_since_origin,init_yr,day_in_init_yr', days_since_origin,init_yr,day_in_init_yr 503 ! !WRITE(numout,*) 'astro: fjulday_org', fjulday_org 504 ! !WRITE(numout,*) 'astro: fjulday', fjulday 505 ! !WRITE(numout,*) 'astro: fjulday - fjulday_org', fjulday - fjulday_org 506 ! !WRITE(numout,*) 'astro: days_since_origin_ymds2ju_int', days_since_origin_ymds2ju_int 507 ! ENDIF 508 ! 509 ! 510 ! ! how many leap years since the origin. 511 ! nleap = (yr_360-yr_org)/4 - 1 !1900 is not a leap year 512 ! 513 ! ! initial estimate of the day of year 514 ! init_doy = MOD(days_since_origin,365) 515 ! 516 ! ! correct the initial estimate for the DOY for the number of leap days since the origin 517 ! init_doy_inc_l = init_doy - nleap 518 ! 519 ! 520 ! IF (ln_astro_verbose .AND. lwp) THEN 521 ! WRITE(numout,*) 'astro: nleap,init_doy,init_doy_inc_l',nleap,init_doy,init_doy_inc_l 522 ! ENDIF 523 ! 524 ! 525 ! ! The number of leap days could pull the DOY before 0. 526 ! ! in which case decrement the year, and reset the DOY. 527 ! ! of the origin is 365 leap years ago, and initial DOY could be adjusted by more than one year.. 528 ! ! Unlikely to be a prob, but need to remember if planning very long control runs. Need to think about this. 529 ! 530 ! IF (init_doy_inc_l .LT. 0) THEN 531 ! init_doy_inc_l = init_doy_inc_l+365 532 ! init_yr = init_yr - 1 533 ! IF (MOD(init_yr, 4) == 0 ) THEN 534 ! init_doy_inc_l = init_doy_inc_l + 1 535 ! ENDIF 536 ! ENDIF 537 ! 538 ! 539 ! ! This gives the year and the day of year in the gregorian calendar 540 ! yr_grg = init_yr 541 ! doy_grg = init_doy_inc_l 542 ! yg_is_leap_mod = MOD(yr_grg, 4) 543 ! 544 ! IF (ln_astro_verbose .AND. lwp) THEN 545 ! WRITE(numout,*) 'astro: yr_grg,doy_grg,yg_is_leap_mod',yr_grg,doy_grg,yg_is_leap_mod 546 ! ENDIF 547 ! 548 ! 549 ! ! Convert from day of year to month and day in the gregorian calendar. 550 ! ! dayjul code adapted 551 ! ! this perhaps should be a function, but not sure how to write one 552 ! ! there may be this code functionality elsewhere in NEMO 553 ! !!---------------------------------------------------------------------- 554 ! 555 ! 556 ! ! what is the DOY of the first day of the month for each month. 557 ! ! correct for leap years. 558 ! 559 ! idays(1) = 0. 560 ! idays(2) = 31. 561 ! inc = 0. 562 ! IF( yg_is_leap_mod == 0.) inc = 1. 563 ! 564 ! DO ji = 3, 12 565 ! idays(ji)=idayt(ji)+inc 566 ! END DO 567 ! 568 ! ! cycle through the months. 569 ! ! if the DOY is greater than the DOY of the first Day of Month 570 ! ! Note the month. Calculate day of month by subtraction. 571 ! ! Once beyond the correct month, the if statement won't be true, so wont calculate. 572 ! 573 ! DO ji = 1, 12 574 ! IF ( doy_grg .GE. idays(ji) ) THEN 575 ! mn_grg = ji 576 ! dy_grg = doy_grg-idays(ji) +1 577 ! ENDIF 578 ! END DO 579 ! 580 ! 581 ! 582 ! 583 ! 584 ! IF(ln_astro_verbose .AND. lwp) THEN 585 ! WRITE(numout,*) 'astro: mn_grg,dy_grg',mn_grg,dy_grg 586 ! WRITE(numout,*) ' ' 587 ! WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_360,mn_360,dy_360,yr_grg,mn_grg,dy_grg,doy_grg =',yr_360,mn_360,dy_360,yr_grg,mn_grg,dy_grg,doy_grg 588 ! 589 ! WRITE(numout,*) ' ' 590 ! ENDIF 591 ! 592 ! 593 ! 594 ! IF (ln_astro_verbose .AND. lwp) WRITE(numout,*) 'tide_mod_astro_ang_meth_1,',yr_grg, mn_grg, dy_grg 595 596 597 !ELSE ! ln_tide_drift_time_cont_manual 598 599 600 ! number of days since 15th October 1582, for namelist origin, in both calendars, and for current model day. 601 602 CALL ymds2ju_JT( yr_org,mn_org,dy_org, 0. ,jul_org_greg,365.24 ) 603 CALL ymds2ju_JT( yr_org,mn_org,dy_org, 0. ,jul_org_360,360. ) 604 CALL ymds2ju_JT( yr_360,mn_360,dy_360, 0. ,jul_pres_360,360. ) 605 606 ! Calculate the days since the origin: days_since_origin_ymds2ju_int 607 ! How many days between the current day, and the origin, in the 360 day calendar. 608 days_since_origin_ymds2ju_int = jul_pres_360 - jul_org_360 609 610 IF (ln_astro_verbose .AND. lwp) THEN 611 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : jul_org_360,jul_pres_360,jul_pres_360 - jul_org_360 =',jul_org_360,jul_pres_360,jul_pres_360 - jul_org_360 612 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : days_since_origin_ymds2ju_int, days_since_origin_ymds2ju_int mod 360 =',days_since_origin_ymds2ju_int,MOD( days_since_origin_ymds2ju_int ,360 ) 613 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_org,mn_org,dy_org, jul_org_greg =',yr_org,mn_org,dy_org, jul_org_greg 614 ENDIF 615 616 !add days_since_origin_ymds2ju_int days to the origin in the gregorian calendar. 617 CALL ju2ymds_JT( days_since_origin_ymds2ju_int + jul_org_greg, yr_grg, mn_grg, dy_grg, sec_grg,365.24 ) 618 619 IF (ln_astro_verbose .AND. lwp) THEN 620 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_grg, mn_grg, dy_grg =',yr_grg, mn_grg, dy_grg 621 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_360, mn_360, dy_360 =',yr_360, mn_360, dy_360 622 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_org, mn_org, dy_org =',yr_org, mn_org, dy_org 623 ENDIF 624 625 626 627 628 IF (ln_astro_verbose .AND. lwp) WRITE(numout,*) 'tide_mod_astro_ang_meth_2,',yr_grg, mn_grg, dy_grg 629 630 !ENDIF !ln_tide_drift_time_cont_manual 396 397 CALL ymds2ju_JT( yr_org,mn_org,dy_org, 0. ,jul_org_greg,365.24 ) 398 CALL ymds2ju_JT( yr_org,mn_org,dy_org, 0. ,jul_org_360,360. ) 399 CALL ymds2ju_JT( yr_360,mn_360,dy_360, 0. ,jul_pres_360,360. ) 400 401 ! Calculate the days since the origin: days_since_origin_ymds2ju_int 402 ! How many days between the current day, and the origin, in the 360 day calendar. 403 days_since_origin_ymds2ju_int = jul_pres_360 - jul_org_360 404 405 IF (ln_astro_verbose .AND. lwp) THEN 406 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : jul_org_360,jul_pres_360,jul_pres_360 - jul_org_360 =',jul_org_360,jul_pres_360,jul_pres_360 - jul_org_360 407 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : days_since_origin_ymds2ju_int, days_since_origin_ymds2ju_int mod 360 =',days_since_origin_ymds2ju_int,MOD( days_since_origin_ymds2ju_int ,360 ) 408 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_org,mn_org,dy_org, jul_org_greg =',yr_org,mn_org,dy_org, jul_org_greg 409 ENDIF 410 411 !add days_since_origin_ymds2ju_int days to the origin in the gregorian calendar. 412 CALL ju2ymds_JT( days_since_origin_ymds2ju_int + jul_org_greg, yr_grg, mn_grg, dy_grg, sec_grg,365.24 ) 413 414 IF (ln_astro_verbose .AND. lwp) THEN 415 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_grg, mn_grg, dy_grg =',yr_grg, mn_grg, dy_grg 416 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_360, mn_360, dy_360 =',yr_360, mn_360, dy_360 417 WRITE(numout,*) 'tide_mod_astro_ang 360_corr : yr_org, mn_org, dy_org =',yr_org, mn_org, dy_org 418 ENDIF 419 420 421 422 423 IF (ln_astro_verbose .AND. lwp) WRITE(numout,*) 'tide_mod_astro_ang_meth_2,',yr_grg, mn_grg, dy_grg 424 631 425 632 426 ! for 360 calendars, work with the pseudo gregorian dates … … 637 431 days_since_origin = days_since_origin_ymds2ju_int 638 432 639 640 !IF (ln_tide_compress) THEN641 ! yr_wrk = nyear642 ! mn_wrk = nmonth643 ! dy_wrk = nday644 !ENDIF645 433 646 434 ELSE … … 997 785 IF(ln_astro_verbose .AND. lwp) WRITE(numout,*) 'astro tide_vuf 1:',jh,kc,ktide(jh),v0linearslope(jh),freq_per_day(jh), pomega(jh),(2*rpi/pomega(jh))/3600.! * 86400.0_wp,freq(jh)*24,per_hr(jh),freq(jh) 998 786 ENDDO 999 1000 1001 ! !offset(1) = 0.10789890_wp1002 ! !offset(2) = 1.10897897_wp1003 ! !offset(3) = 2.11005903_wp1004 ! !offset(4) = 0.00000000_wp1005 ! !offset(5) = 3.47632710_wp1006 ! !offset(6) = 0.16751976_wp1007 ! !offset(7) = -0.05503165_wp1008 ! !offset(8) = 0.94604842_wp1009 ! !offset(9) = 6.10534877_wp1010 ! !offset(10) = 0.21579780_wp1011 ! !offset(11) = 0.00000000_wp1012 ! !offset(12) = 0.00000000_wp1013 ! !offset(13) = 0.00000000_wp1014 ! !offset(14) = 0.00000000_wp1015 ! !offset(15) = 3.14159265_wp1016 ! !offset(16) = 0.21833313_wp1017 ! !offset(17) = 5.50043837_wp1018 ! !offset(18) = 2.24841149_wp1019 ! !offset(19) = 0.01800173_wp1020 1021 ! !v0linearintercept(1) = 0.11044027_wp1022 ! !v0linearintercept(2) = 1.11152799_wp1023 ! !v0linearintercept(3) = 2.11261570_wp1024 ! !v0linearintercept(4) = 0.00000000_wp1025 ! !v0linearintercept(5) = 3.49727335_wp1026 ! !v0linearintercept(6) = 0.17784035_wp1027 ! !v0linearintercept(7) = 6.21578523_wp1028 ! !v0linearintercept(8) = 0.93368764_wp1029 ! !v0linearintercept(9) = 6.10534496_wp1030 ! !v0linearintercept(10) = 0.22088055_wp1031 ! !v0linearintercept(11) = 0.00000000_wp1032 ! !v0linearintercept(12) = 0.00000000_wp1033 ! !v0linearintercept(13) = 0.00000000_wp1034 ! !v0linearintercept(14) = 0.00000000_wp1035 ! !v0linearintercept(15) = 3.14159265_wp1036 1037 ! !v0linearintercept(1) = v0linearintercept(1) - 0.000000_wp1038 ! !v0linearintercept(2) = v0linearintercept(2) - 0.000000_wp1039 ! !v0linearintercept(3) = v0linearintercept(3) - 0_wp1040 ! !v0linearintercept(4) = v0linearintercept(4) - 0.165795_wp1041 ! !v0linearintercept(5) = v0linearintercept(5) + 2.821252_wp1042 ! !v0linearintercept(6) = v0linearintercept(6) + 0.479504_wp1043 ! !v0linearintercept(7) = v0linearintercept(7) - 2.175621_wp1044 ! !v0linearintercept(8) = v0linearintercept(8) + 1.900267_wp1045 ! !v0linearintercept(9) = v0linearintercept(9) + 0.107633_wp1046 ! !v0linearintercept(10) = v0linearintercept(10) - 0.000000_wp1047 ! !v0linearintercept(11) = v0linearintercept(11) - 0.000000_wp1048 ! !v0linearintercept(12) = v0linearintercept(12) - 0.225730_wp1049 ! !v0linearintercept(13) = v0linearintercept(13) - 0.238641_wp1050 ! !v0linearintercept(14) = v0linearintercept(14) - 3.005851_wp1051 ! !v0linearintercept(15) = v0linearintercept(15) - 0.000000_wp1052 1053 ! !v0linearintercept(1) = 0.11044026999999999_wp1054 ! !v0linearintercept(2) = 1.11152798999999990_wp1055 ! !v0linearintercept(3) = 2.11261570000000010_wp1056 ! !v0linearintercept(4) = -0.16579500000000000_wp1057 ! !v0linearintercept(5) = 6.31852534999999980_wp1058 ! !v0linearintercept(6) = 0.65734435000000002_wp1059 ! !v0linearintercept(7) = 4.04016423000000020_wp1060 ! !v0linearintercept(8) = 2.83395464000000000_wp1061 ! !v0linearintercept(9) = 6.21297795999999990_wp1062 ! !v0linearintercept(10) = 0.22088055000000001_wp1063 ! !v0linearintercept(11) = 0.00000000000000000_wp1064 ! !v0linearintercept(12) = -0.22572999999999999_wp1065 ! !v0linearintercept(13) = -0.23864099999999999_wp1066 ! !v0linearintercept(14) = -3.00585099999999980_wp1067 ! !v0linearintercept(15) = 3.14159265000000020_wp1068 1069 ! v0linearintercept( 1) = 0.2208805500_wp - (rpi* 68.0_wp/180.0_wp) ! M2 11070 ! v0linearintercept( 2) = 3.1186126191_wp ! N2 21071 ! v0linearintercept( 3) = 0.9305155436_wp ! 2N2 31072 ! v0linearintercept( 4) = 0.0194858941_wp ! S2 41073 ! v0linearintercept( 5) = -2.5213114949_wp ! K2 51074 ! v0linearintercept( 6) = 6.5970532125_wp ! K1 61075 ! v0linearintercept( 7) = 1.1115279900_wp ! O1 71076 ! v0linearintercept( 8) = 0.1104402700_wp ! Q1 81077 ! ! v0linearintercept( 9) = 4.2269096542_wp ! P1 91078 ! !v0linearintercept( 9) = -2.0351042402_wp ! P1 9 compress31079 ! !v0linearintercept( 9) = -2.0351042402_wp - 2.6179938779914944 ! P1 9 compress41080 1081 ! v0linearintercept( 9) = rpi* 345.0_wp/180.0_wp - (rpi* 140.0_wp/180.0_wp) ! P1 9 compress41082 1083 ! v0linearintercept(10) = 3.1415926500_wp ! M4 101084 ! v0linearintercept(11) = 0.0000000000_wp ! Mf 111085 ! v0linearintercept(12) = 0.0000000000_wp ! Mm 121086 ! v0linearintercept(13) = 0.0000000000_wp ! Msqm 131087 ! v0linearintercept(14) = 0.0000000000_wp ! Mtm 141088 ! v0linearintercept(15) = -0.0230244122_wp ! S1 151089 ! v0linearintercept(16) = 4.2565208698_wp ! MU2 161090 ! v0linearintercept(17) = 6.5001767059_wp ! NU2 171091 ! v0linearintercept(18) = 0.0000000000_wp - (rpi* 113.0_wp/180.0_wp) ! L2 181092 ! v0linearintercept(19) = 0.0092971808_wp ! T2 19 + rpi/2.1093 1094 ! !v0linearintercept(1) = v0linearintercept(1) - 0.034975_wp ! M21095 ! !v0linearintercept(2) = v0linearintercept(2) - 0.030244_wp ! N21096 ! !v0linearintercept(3) = v0linearintercept(3) - 0.036046_wp ! 2N21097 ! !v0linearintercept(4) = v0linearintercept(4) + 0.002092_wp ! S21098 ! !v0linearintercept(5) = v0linearintercept(5) - 0.273826_wp ! K21099 ! !v0linearintercept(6) = v0linearintercept(6) - 0.144677_wp ! K11100 ! !v0linearintercept(7) = v0linearintercept(7) + 0.031938_wp ! O11101 ! !v0linearintercept(8) = v0linearintercept(8) - 0.812030_wp ! Q11102 ! !v0linearintercept(9) = v0linearintercept(9) + 2.109118_wp ! P11103 ! !v0linearintercept(10) = v0linearintercept(10) + 0.070021_wp ! M41104 ! !v0linearintercept(11) = v0linearintercept(11) - 0.000000_wp ! Mf1105 ! !v0linearintercept(12) = v0linearintercept(12) - 0.000000_wp ! Mm1106 ! !v0linearintercept(13) = v0linearintercept(13) - 0.000000_wp ! Msqm1107 ! !v0linearintercept(14) = v0linearintercept(14) - 0.000000_wp ! Mtm1108 ! !v0linearintercept(15) = v0linearintercept(15) - 0.035676_wp ! S11109 ! !v0linearintercept(16) = v0linearintercept(16) + 0.007598_wp ! MU21110 ! !v0linearintercept(17) = v0linearintercept(17) - 0.043060_wp ! NU21111 ! !v0linearintercept(18) = v0linearintercept(18) + 0.023561_wp ! L21112 ! !v0linearintercept(19) = v0linearintercept(19) + 0.025624_wp ! T21113 1114 ! v0linearintercept(1) = v0linearintercept(1) - (rpi*2.003909_wp/180.0_wp) ! M21115 ! v0linearintercept(2) = v0linearintercept(2) - (rpi*1.732874_wp/180.0_wp) ! N21116 ! v0linearintercept(3) = v0linearintercept(3) - (rpi*2.065265_wp/180.0_wp) ! 2N21117 ! v0linearintercept(4) = v0linearintercept(4) + (rpi*0.119842_wp/180.0_wp) ! S21118 ! v0linearintercept(5) = v0linearintercept(5) - (rpi*15.689068_wp/180.0_wp) ! K21119 ! v0linearintercept(6) = v0linearintercept(6) - (rpi*8.289390_wp/180.0_wp) ! K11120 ! v0linearintercept(7) = v0linearintercept(7) + (rpi*1.829931_wp/180.0_wp) ! O11121 ! v0linearintercept(8) = v0linearintercept(8) - (rpi*46.525902_wp/180.0_wp) ! Q11122 ! v0linearintercept(9) = v0linearintercept(9) + (rpi*120.843575_wp/180.0_wp) ! P11123 ! v0linearintercept(10) = v0linearintercept(10) + (rpi*4.011896_wp/180.0_wp) ! M41124 ! v0linearintercept(11) = v0linearintercept(11) - (rpi*0.000000_wp/180.0_wp) ! Mf1125 ! v0linearintercept(12) = v0linearintercept(12) - (rpi*0.000000_wp/180.0_wp) ! Mm1126 ! v0linearintercept(13) = v0linearintercept(13) - (rpi*0.000000_wp/180.0_wp) ! Msqm1127 ! v0linearintercept(14) = v0linearintercept(14) - (rpi*0.000000_wp/180.0_wp) ! Mtm1128 ! v0linearintercept(15) = v0linearintercept(15) - (rpi*2.044069_wp/180.0_wp) ! S11129 ! v0linearintercept(16) = v0linearintercept(16) + (rpi*0.435315_wp/180.0_wp) ! MU21130 ! v0linearintercept(17) = v0linearintercept(17) - (rpi*2.467160_wp/180.0_wp) ! NU21131 ! v0linearintercept(18) = v0linearintercept(18) + (rpi*1.349939_wp/180.0_wp) ! L21132 ! v0linearintercept(19) = v0linearintercept(19) + (rpi*1.468170_wp/180.0_wp) ! T21133 1134 1135 ! ! wave data.1136 1137 ! !Wave( 1) = tide( 'M2' , 0.242297 , 2 , 2 , -2 , 2 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )1138 ! !Wave( 2) = tide( 'N2' , 0.046313 , 2 , 2 , -3 , 2 , 1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )1139 ! !Wave( 3) = tide( '2N2' , 0.006184 , 2 , 2 , -4 , 2 , 2 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )1140 ! !Wave( 4) = tide( 'S2' , 0.113572 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )1141 ! !Wave( 5) = tide( 'K2' , 0.030875 , 2 , 2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , -2 , 0 , 235 )1142 ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1143 ! !Wave( 6) = tide( 'K1' , 0.142408 , 1 , 1 , 0 , 1 , 0 , 0 , -90 , 0 , 0 , -1 , 0 , 0 , 227 )1144 ! !Wave( 7) = tide( 'O1' , 0.101266 , 1 , 1 , -2 , 1 , 0 , 0 , +90 , 2 , -1 , 0 , 0 , 0 , 75 )1145 ! !Wave( 8) = tide( 'Q1' , 0.019387 , 1 , 1 , -3 , 1 , 1 , 0 , +90 , 2 , -1 , 0 , 0 , 0 , 75 )1146 ! !Wave( 9) = tide( 'P1' , 0.047129 , 1 , 1 , 0 , -1 , 0 , 0 , +90 , 0 , 0 , 0 , 0 , 0 , 0 )1147 ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1148 ! !Wave(10) = tide( 'M4' , 0.000000 , 4 , 4 , -4 , 4 , 0 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 1 )1149 ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1150 ! !Wave(11) = tide( 'Mf' , 0.042017 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 )1151 ! !Wave(12) = tide( 'Mm' , 0.022191 , 0 , 0 , 1 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 73 )1152 ! !Wave(13) = tide( 'Msqm' , 0.000667 , 0 , 0 , 4 , -2 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 )1153 ! !Wave(14) = tide( 'Mtm' , 0.008049 , 0 , 0 , 3 , 0 , -1 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 )1154 ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !1155 ! !Wave(15) = tide( 'S1' , 0.000000 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )1156 ! !Wave(16) = tide( 'MU2' , 0.005841 , 2 , 2 , -4 , 4 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )1157 ! !Wave(17) = tide( 'NU2' , 0.009094 , 2 , 2 , -3 , 4 , -1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )1158 ! !Wave(18) = tide( 'L2' , 0.006694 , 2 , 2 , -1 , 2 , -1 , 0 , +180 , 2 , -2 , 0 , 0 , 0 , 215 )1159 ! !Wave(19) = tide( 'T2' , 0.006614 , 2 , 2 , 0 , -1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )1160 1161 ! !name list1162 ! ! clname(1)='Q1'1163 ! ! clname(2)='O1'1164 ! ! clname(3)='P1'1165 ! ! clname(4)='S1'1166 ! ! clname(5)='K1'1167 ! ! clname(6)='2N2'1168 ! ! clname(7)='MU2'1169 ! ! clname(8)='N2'1170 ! ! clname(9)='NU2'1171 ! ! clname(10)='M2'1172 ! ! clname(11)='L2'1173 ! ! clname(12)='T2'1174 ! ! clname(13)='S2'1175 ! ! clname(14)='K2'1176 ! ! clname(15)='M4'1177 1178 ! ! ktide 8,7,9,151179 1180 ! !ktide =1181 ! !81182 ! !71183 ! !91184 ! !151185 ! !61186 ! !31187 ! !161188 ! !21189 ! !171190 ! !11191 ! !181192 ! !191193 ! !41194 ! !51195 ! !101196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 ! !NEMO41209 1210 !! clname(1)='Q1'1211 !! clname(2)='O1'1212 !! clname(3)='P1'1213 !! clname(4)='S1'1214 !! clname(5)='K1'1215 !! clname(6)='2N2'1216 !! clname(7)='MU2'1217 !! clname(8)='N2'1218 !! clname(9)='NU2'1219 !! clname(10)='M2'1220 !! clname(11)='L2'1221 !! clname(12)='T2'1222 !! clname(13)='S2'1223 !! clname(14)='K2'1224 !! clname(15)='M4'1225 !! ktide = [10,9,11,12,8,23,21,15,22,14,18,19,16,17,28]1226 1227 1228 ! v0linearintercept( 1) = 0.1104402700_wp ! Q1 81229 ! v0linearintercept( 2) = 1.1115279900_wp ! O1 71230 ! v0linearintercept( 3) = rpi* 345.0_wp/180.0_wp - (rpi* 140.0_wp/180.0_wp) ! P1 9 compress41231 ! v0linearintercept( 4) = -0.0230244122_wp ! S1 151232 ! v0linearintercept( 5) = 6.5970532125_wp ! K1 61233 ! v0linearintercept( 6) = 0.9305155436_wp ! 2N2 31234 ! v0linearintercept( 7) = 4.2565208698_wp ! MU2 161235 ! v0linearintercept( 8) = 3.1186126191_wp ! N2 21236 ! v0linearintercept( 9) = 6.5001767059_wp ! NU2 171237 ! v0linearintercept(10) = 0.2208805500_wp - (rpi* 68.0_wp/180.0_wp) ! M2 11238 ! v0linearintercept(11) = 0.0000000000_wp - (rpi* 113.0_wp/180.0_wp) ! L2 181239 ! v0linearintercept(12) = 0.0092971808_wp ! T2 19 + rpi/2.1240 ! v0linearintercept(13) = 0.0194858941_wp ! S2 41241 ! v0linearintercept(14) = -2.5213114949_wp ! K2 51242 ! v0linearintercept(15) = 3.1415926500_wp ! M4 101243 1244 1245 1246 ! v0linearintercept( 1) = v0linearintercept( 1) - (rpi*46.525902_wp/180.0_wp) ! Q11247 ! v0linearintercept( 2) = v0linearintercept( 2) + (rpi*1.829931_wp/180.0_wp) ! O11248 ! v0linearintercept( 3) = v0linearintercept( 3) + (rpi*120.843575_wp/180.0_wp) ! P11249 ! v0linearintercept( 4) = v0linearintercept( 4) - (rpi*2.044069_wp/180.0_wp) ! S11250 ! v0linearintercept( 5) = v0linearintercept( 5) - (rpi*8.289390_wp/180.0_wp) ! K11251 ! v0linearintercept( 6) = v0linearintercept( 6) - (rpi*2.065265_wp/180.0_wp) ! 2N21252 ! v0linearintercept( 7) = v0linearintercept( 7) + (rpi*0.435315_wp/180.0_wp) ! MU21253 ! v0linearintercept( 8) = v0linearintercept( 8) - (rpi*1.732874_wp/180.0_wp) ! N21254 ! v0linearintercept( 9) = v0linearintercept( 9) - (rpi*2.467160_wp/180.0_wp) ! NU21255 ! v0linearintercept(10) = v0linearintercept(10) - (rpi*2.003909_wp/180.0_wp) ! M21256 ! v0linearintercept(11) = v0linearintercept(11) + (rpi*1.349939_wp/180.0_wp) ! L21257 ! v0linearintercept(12) = v0linearintercept(12) + (rpi*1.468170_wp/180.0_wp) ! T21258 ! v0linearintercept(13) = v0linearintercept(13) + (rpi*0.119842_wp/180.0_wp) ! S21259 ! v0linearintercept(14) = v0linearintercept(14) - (rpi*15.689068_wp/180.0_wp) ! K21260 ! v0linearintercept(14) = v0linearintercept(15) + (rpi*4.011896_wp/180.0_wp) ! M41261 1262 1263 1264 1265 1266 787 1267 788 DO jh = 1, kc … … 1346 867 tmp_name=TRIM(Wave(ktide(jh))%cname_tide)//'_utide' 1347 868 IF( iom_use(TRIM(tmp_name)) ) THEN 1348 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name),'; shape = ', SHAPE(anau(jh) )1349 869 CALL iom_put( TRIM(tmp_name), put(jh) ) 1350 !ELSE1351 ! IF(lwp) WRITE(numout,*) "harm_ana_out: not requested: ",TRIM(tmp_name)1352 870 ENDIF 1353 871 1354 872 tmp_name=TRIM(Wave(ktide(jh))%cname_tide)//'_v0tide' 1355 873 IF( iom_use(TRIM(tmp_name)) ) THEN 1356 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name),'; shape = ', SHAPE(anav(jh) )1357 874 CALL iom_put( TRIM(tmp_name), pvt(jh) ) 1358 !ELSE1359 ! IF(lwp) WRITE(numout,*) "harm_ana_out: not requested: ",TRIM(tmp_name)1360 875 ENDIF 1361 876 1362 877 tmp_name=TRIM(Wave(ktide(jh))%cname_tide)//'_v0tide_origin' 1363 878 IF( iom_use(TRIM(tmp_name)) ) THEN 1364 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name),'; shape = ', SHAPE(anav(jh) )1365 879 CALL iom_put( TRIM(tmp_name), v0linearintercept(jh) ) 1366 !ELSE1367 ! IF(lwp) WRITE(numout,*) "harm_ana_out: not requested: ",TRIM(tmp_name)1368 880 ENDIF 1369 881 … … 1373 885 tmp_name=TRIM(Wave(ktide(jh))%cname_tide)//'_ftide' 1374 886 IF( iom_use(TRIM(tmp_name)) ) THEN 1375 ! IF(lwp) WRITE(numout,*) "harm_ana_out: iom_put: ",TRIM(tmp_name),'; shape = ', SHAPE(anaf(jh) )1376 887 CALL iom_put( TRIM(tmp_name), pcor(jh) ) 1377 !ELSE1378 ! IF(lwp) WRITE(numout,*) "harm_ana_out: not requested: ",TRIM(tmp_name)1379 888 ENDIF 1380 889
Note: See TracChangeset
for help on using the changeset viewer.