Changeset 13826 for NEMO/branches/2020/dev_r2052_ENHANCE-09_rbourdal_massfluxconvection/src/OCE/TRA/eosbn2.F90
- Timestamp:
- 2020-11-19T10:26:41+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r2052_ENHANCE-09_rbourdal_massfluxconvection/src/OCE/TRA/eosbn2.F90
r13497 r13826 55 55 ! !! * Interface 56 56 INTERFACE eos 57 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d 57 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d, eos_insitu_pot_2d 58 58 END INTERFACE 59 59 ! … … 538 538 539 539 540 SUBROUTINE eos_insitu_pot_2d( pts, prhop ) 541 !!---------------------------------------------------------------------- 542 !! *** ROUTINE eos_insitu_pot *** 543 !! 544 !! ** Purpose : Compute the in situ density (ratio rho/rho0) and the 545 !! potential volumic mass (Kg/m3) from potential temperature and 546 !! salinity fields using an equation of state selected in the 547 !! namelist. 548 !! 549 !! ** Action : 550 !! - prhop, the potential volumic mass (Kg/m3) 551 !! 552 !!---------------------------------------------------------------------- 553 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 554 ! ! 2 : salinity [psu] 555 REAL(wp), DIMENSION(jpi,jpj ), INTENT( out) :: prhop ! potential density (surface referenced) 556 ! 557 INTEGER :: ji, jj, jk, jsmp ! dummy loop indices 558 INTEGER :: jdof 559 REAL(wp) :: zt , zh , zstemp, zs , ztm ! local scalars 560 REAL(wp) :: zn , zn0, zn1, zn2, zn3 ! - - 561 REAL(wp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign ! local vectors 562 !!---------------------------------------------------------------------- 563 ! 564 IF( ln_timing ) CALL timing_start('eos-pot') 565 ! 566 SELECT CASE ( neos ) 567 ! 568 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 569 ! 570 DO_2D( 1, 1, 1, 1 ) 571 ! 572 zt = pts (ji,jj,jp_tem) * r1_T0 ! temperature 573 zs = SQRT( ABS( pts(ji,jj,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity 574 ztm = tmask(ji,jj,1) ! tmask 575 ! 576 zn0 = (((((EOS060*zt & 577 & + EOS150*zs+EOS050)*zt & 578 & + (EOS240*zs+EOS140)*zs+EOS040)*zt & 579 & + ((EOS330*zs+EOS230)*zs+EOS130)*zs+EOS030)*zt & 580 & + (((EOS420*zs+EOS320)*zs+EOS220)*zs+EOS120)*zs+EOS020)*zt & 581 & + ((((EOS510*zs+EOS410)*zs+EOS310)*zs+EOS210)*zs+EOS110)*zs+EOS010)*zt & 582 & + (((((EOS600*zs+EOS500)*zs+EOS400)*zs+EOS300)*zs+EOS200)*zs+EOS100)*zs+EOS000 583 ! 584 ! 585 prhop(ji,jj) = zn0 * ztm ! potential density referenced at the surface 586 ! 587 END_2D 588 589 CASE( np_seos ) !== simplified EOS ==! 590 ! 591 DO_2D( 1, 1, 1, 1 ) 592 zt = pts (ji,jj,jp_tem) - 10._wp 593 zs = pts (ji,jj,jp_sal) - 35._wp 594 ztm = tmask(ji,jj,1) 595 ! ! potential density referenced at the surface 596 zn = - rn_a0 * ( 1._wp + 0.5_wp*rn_lambda1*zt ) * zt & 597 & + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs & 598 & - rn_nu * zt * zs 599 prhop(ji,jj) = ( rho0 + zn ) * ztm 600 ! 601 END_2D 602 ! 603 END SELECT 604 !RBB IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=prd, clinfo1=' eos-pot: ', tab2d_2=prhop, clinfo2=' pot : ', kdim=1 ) 605 ! 606 IF( ln_timing ) CALL timing_stop('eos-pot') 607 ! 608 END SUBROUTINE eos_insitu_pot_2d 609 610 540 611 SUBROUTINE rab_3d( pts, pab, Kmm ) 541 612 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.