Changeset 440 for trunk/NEMO/OPA_SRC/SBC/ocesbc.F90
- Timestamp:
- 2006-04-19T16:43:17+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SBC/ocesbc.F90
r434 r440 87 87 !! * Local declarations 88 88 INTEGER :: ji, jj ! dummy loop indices 89 REAL(wp) :: ztx, ztaux, zty, ztauy , ztrp89 REAL(wp) :: ztx, ztaux, zty, ztauy 90 90 REAL(wp) :: ztdta, ztgel, zqrp 91 91 !!---------------------------------------------------------------------- … … 113 113 ! Surface heat flux (W/m2) 114 114 ! ----------------------- 115 ztrp = 0.e0116 115 117 116 ! restoring heat flux … … 124 123 ztdta = MAX( t_dta(ji,jj,1), ztgel ) 125 124 #endif 126 zqrp = ztrp* ( tb(ji,jj,1) - ztdta )125 zqrp = dqdt0 * ( tb(ji,jj,1) - ztdta ) 127 126 128 127 qrp(ji,jj) = (1.0-freeze(ji,jj) ) * zqrp … … 306 305 !! * Local declarations 307 306 INTEGER :: ji, jj, jf ! dummy loop indices 308 REAL(wp) :: zt rp, ztgel,& ! temporary scalars307 REAL(wp) :: ztgel, & ! temporary scalars 309 308 zice, zhemis, zqrp, zqri, & ! " " 310 309 zq, zqi, zerp, ze, zei, zro ! " " … … 313 312 ! Compute fluxes 314 313 ! -------------- 315 316 ! constant initialization317 ztrp = -40. ! restoring term for temperature (w/m2/k)318 314 319 315 DO jj = 1, jpj … … 343 339 344 340 zqrp = 0. 345 zqri = ztrp*MIN( 0., tb(ji,jj,1)-ztgel )341 zqri = dqdt0*MIN( 0., tb(ji,jj,1)-ztgel ) 346 342 qrp(ji,jj) = ( ( 1. - zice ) * zqrp + zice * zqri ) * tmask(ji,jj,1) 347 343 … … 417 413 REAL(wp) :: zxy 418 414 REAL(wp) :: zsice, zqri, zqrp, ztdta, zqrj 419 REAL(wp) :: zq, zqi, zhemis , ztrp415 REAL(wp) :: zq, zqi, zhemis 420 416 REAL(wp), DIMENSION(jpi,jpj) :: zeri, zerps, ziclim 421 417 REAL(wp), DIMENSION(jpi,jpj) :: zqt, zqsr, zemp … … 456 452 CALL oce_sbc_dmp 457 453 458 ztrp = -40. ! restoring terme for temperature (w/m2/k)459 454 zsice = - 0.04 / 0.8 ! ratio of isohaline compressibility over isotherme compressibility 460 455 ! ( d rho / dt ) / ( d rho / ds ) ( s = 34, t = -1.8 ) … … 486 481 ! - gamma*min(0,t-tgel) if climatological and opa ice (ziclim=1 zicopa=1) 487 482 488 zqri = ztrp* ( tb(ji,jj,1) - ( fzptn(ji,jj) - 1.) )489 zqrj = ztrp* MIN( 0., tb(ji,jj,1) - fzptn(ji,jj) )483 zqri = dqdt0 * ( tb(ji,jj,1) - ( fzptn(ji,jj) - 1.) ) 484 zqrj = dqdt0 * MIN( 0., tb(ji,jj,1) - fzptn(ji,jj) ) 490 485 491 486 qrp(ji,jj) = ( ziclim(ji,jj) * ( (1 - freeze(ji,jj)) * zqri & … … 493 488 494 489 #if ! defined key_flx_bulk_monthly || ! defined key_flx_bulk_daily 495 zqrp = ztrp* ( tb(ji,jj,1) - ztdta )490 zqrp = dqdt0 * ( tb(ji,jj,1) - ztdta ) 496 491 qrp(ji,jj) = qrp(ji,jj) + (1. - ziclim(ji,jj)) * zqrp 497 492 # endif … … 579 574 USE flxrnf ! ocean runoffs 580 575 USE daymod, ONLY : nyear ! calendar 576 USE dtasss ! sea surface salinity data 581 577 582 578 !! * arguments … … 588 584 qsr0 = 0.e0, & ! solar heat flux 589 585 emp0 = 0.e0 ! net freshwater flux 590 REAL(wp) :: ztrp, zemp_S, zemp_N, zemp_sais, zTstar, zcos_sais1, zconv, zcos_sais2 586 REAL(wp) :: zsrp, & 587 zemp_S, zemp_N, zemp_sais, & 588 zTstar, zcos_sais1, zconv, & 589 zcos_sais2 591 590 REAL(wp) :: & 592 591 zsumemp, & ! tampon used for the emp sum … … 643 642 zcos_sais2 = COS( (ztime - ztimemax2) / (ztimemax2 - ztimemin2) * rpi ) 644 643 645 ztrp= - 40. ! retroaction term (W/m2/K)646 644 zconv = 3.16e-5 ! convert 1m/yr->3.16e-5mm/s 647 645 DO jj = 1, jpj … … 653 651 & * COS( rpi * (gphit(ji,jj) - 5.) & 654 652 & / (53.5 * ( 1 + 11 / 53.5 * zcos_sais2 ) * 2.) ) 655 qt (ji,jj) = ztrp* ( tb(ji,jj,1) - t_star(ji,jj) )653 qt (ji,jj) = dqdt0 * ( tb(ji,jj,1) - t_star(ji,jj) ) 656 654 IF( gphit(ji,jj) >= 14.845 .AND. 37.2 >= gphit(ji,jj)) THEN 657 655 ! zero at 37.8 deg, max at 24.6 deg … … 693 691 ENDIF 694 692 695 !salinity terms 693 IF( lk_dtasss ) THEN ! Sea surface salinity damping 694 ! deds0 from (mm/day) => (mm/s) 695 zsrp = deds0 / rday 696 erp(:,:) = zsrp * ( sss(:,:) - sb(:,:,1) ) / ( sn(:,:,1) + 1.e-20 ) 697 ELSE ! NO Sea surface salinity damping 698 zsrp = 0.e0 699 erp(:,:) = 0.e0 700 ENDIF 701 702 ! freshwater fluxes terms 696 703 DO jj = 1, jpj 697 704 DO ji = 1, jpi 698 erp(ji,jj) = 0.e0699 705 emp(ji, jj) = emp(ji,jj) - zsumemp * tmask(ji,jj,1) 700 emps(ji, jj)= emp(ji,jj) 706 emps(ji, jj)= emp(ji,jj) + erp(ji,jj) 701 707 END DO 702 708 END DO … … 722 728 WRITE(numout,*)' zsumemp = ',zsumemp 723 729 WRITE(numout,*)' zsurf = ',zsurf 724 WRITE(numout,*)' ztrp = ',ztrp 730 WRITE(numout,*)' dqdt0 = ',dqdt0 731 WRITE(numout,*)' deds0 = ',deds0 725 732 WRITE(numout,*)' zconv = ',zconv 726 733 ENDIF … … 728 735 ELSE 729 736 737 ! Constant surface fluxes 738 730 739 IF( kt == nit000 ) THEN 731 732 ! Read Namelist namflx : surface thermohaline fluxes 733 ! -------------------- 734 REWIND ( numnam ) 735 READ ( numnam, namflx ) 736 737 IF(lwp) WRITE(numout,*)' ' 738 IF(lwp) WRITE(numout,*)' ocesbc : Constant surface fluxes read in namelist' 739 IF(lwp) WRITE(numout,*)' ~~~~~~~ ' 740 IF(lwp) WRITE(numout,*)' Namelist namflx: set the constant flux values' 741 IF(lwp) WRITE(numout,*)' net heat flux q0 = ', q0 , ' W/m2' 742 IF(lwp) WRITE(numout,*)' solar heat flux qsr0 = ', qsr0, ' W/m2' 743 IF(lwp) WRITE(numout,*)' net heat flux emp0 = ', emp0, ' W/m2' 740 IF(lwp) THEN 741 WRITE(numout,*)' ' 742 WRITE(numout,*)' ocesbc : Constant surface fluxes read in namelist' 743 WRITE(numout,*)' ~~~~~~~ ' 744 WRITE(numout,*)' Namelist namflx: set the constant flux values' 745 WRITE(numout,*)' net heat flux q0 = ', q0 , ' W/m2' 746 WRITE(numout,*)' solar heat flux qsr0 = ', qsr0, ' W/m2' 747 WRITE(numout,*)' net heat flux emp0 = ', emp0, ' W/m2' 748 ENDIF 744 749 745 750 qt (:,:) = q0 … … 752 757 runoff(:,:) = 0.e0 753 758 ENDIF 759 754 760 ENDIF 755 761 … … 777 783 INTEGER :: ji, jj ! dummy loop indices 778 784 REAL(wp), DIMENSION(jpi,jpj) :: zsss, zfreeze 779 REAL(wp) :: zerp, z trp, zsrp785 REAL(wp) :: zerp, zsrp 780 786 CHARACTER (len=71) :: charout 781 787 #if ! defined key_dynspg_rl … … 807 813 ! -------------- 808 814 ! Restoring coefficients on SST and SSS 809 IF( lk_cpl ) THEN 810 ztrp = 0.e0 811 zsrp = 0.e0 812 ELSE 813 ztrp = -40. ! (W/m2/K) 814 zsrp = ztrp * ro0cpr * rauw ! (Kg/m2/s2) 815 ENDIF 815 zsrp = dqdt0 * ro0cpr * rauw ! (Kg/m2/s) 816 816 817 817 #if ! defined key_dynspg_rl
Note: See TracChangeset
for help on using the changeset viewer.