Changeset 5605
- Timestamp:
- 2015-07-16T20:05:07+02:00 (9 years ago)
- Location:
- branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/CONFIG/SHARED/field_def.xml
r5517 r5605 193 193 194 194 <!-- * variable related to ice shelf forcing * --> 195 <field id="fwfisf" long_name="Ice shelf melting" unit="kg/m2/s" /> 195 <field id="nktop" long_name="top plumes level" unit="lev" /> 196 <field id="nksta" long_name="sta plumes level" unit="lev" /> 197 <field id="nkovt" long_name="ovt plumes level" unit="lev" /> 198 <field id="icwovt" long_name="plumes ovt" unit="m3/s" /> 199 <field id="qsubg" long_name="subglacial melting" unit="m3/s" /> 200 <field id="qmelt" long_name="ice wall melting" unit="m3/s" /> 201 <field id="fwfisf" long_name="Ice shelf melting" unit="Kg/m2/s" /> 196 202 <field id="qisf" long_name="Ice Shelf Heat Flux" unit="W/m2" /> 197 203 <field id="isfgammat" long_name="transfert coefficient for isf (temperature)" unit="m/s" /> -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90
r4990 r5605 24 24 USE in_out_manager ! I/O manager 25 25 USE sbc_oce ! ocean surface boundary conditions 26 USE traicw 26 27 27 28 IMPLICIT NONE … … 91 92 ! Calculate the cumulate surface Flux z_cflxemp (m3/s) over all the domain 92 93 ! ----------------------------------------------------------------------- 93 z_cflxemp = SUM ( ( emp(:,:)-rnf(:,:)+rdivisf*fwfisf(:,:) ) * bdytmask(:,:) * e1t(:,:) * e2t(:,:) ) / rau094 z_cflxemp = SUM ( ( emp(:,:)-rnf(:,:)+rdivisf*fwfisf(:,:) -qtot(:,:)) * bdytmask(:,:) * e1t(:,:) * e2t(:,:) ) / rau0 94 95 IF( lk_mpp ) CALL mpp_sum( z_cflxemp ) ! sum over the global domain 95 96 -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90
r5552 r5605 318 318 ! ========== 319 319 glam0 = 0.e0 320 gphi0 = - ppe2_m * 1.e-3 320 !gphi0 = - ppe2_m * 1.e-3 ! need to be restore before submission into the trunk 321 gphi0 = ppgphi0 - ppe2_m * 1.e-3 321 322 322 323 #if defined key_agrif … … 649 650 CALL iom_close( inum ) 650 651 651 ! need to be define for the extended grid south of -80S652 ! some point are undefined but you need to have e1 and e2 .NE. 0653 WHERE (e1t==0.0_wp)654 e1t=1.0e2655 END WHERE656 WHERE (e1v==0.0_wp)657 e1v=1.0e2658 END WHERE659 WHERE (e1u==0.0_wp)660 e1u=1.0e2661 END WHERE662 WHERE (e1f==0.0_wp)663 e1f=1.0e2664 END WHERE665 WHERE (e2t==0.0_wp)666 e2t=1.0e2667 END WHERE668 WHERE (e2v==0.0_wp)669 e2v=1.0e2670 END WHERE671 WHERE (e2u==0.0_wp)672 e2u=1.0e2673 END WHERE674 WHERE (e2f==0.0_wp)675 e2f=1.0e2676 END WHERE677 678 652 END SUBROUTINE hgr_read 679 653 -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r5516 r5605 29 29 USE sbcrnf ! river runoff 30 30 USE sbcisf ! ice shelf 31 USE traicw ! calving face 31 32 USE cla ! cross land advection (cla_div routine) 32 33 USE in_out_manager ! I/O manager … … 230 231 IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) ! runoffs (update hdivn field) 231 232 IF( ln_divisf .AND. (nn_isf /= 0) ) CALL sbc_isf_div( hdivn ) ! ice shelf (update hdivn field) 233 IF( ln_traicw ) CALL div_icw( hdivn ) ! ice shelf (update hdivn field) 232 234 IF( nn_cla == 1 ) CALL cla_div ( kt ) ! Cross Land Advection (Update Hor. divergence) 233 235 … … 329 331 IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) ! runoffs (update hdivn field) 330 332 IF( ln_divisf .AND. (nn_isf .GT. 0) ) CALL sbc_isf_div( hdivn ) ! ice shelf (update hdivn field) 333 IF( ln_traicw ) CALL div_icw( hdivn ) ! ice shelf (update hdivn field) 331 334 IF( nn_cla == 1 ) CALL cla_div ( kt ) ! Cross Land Advection (update hdivn field) 332 335 ! -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r5436 r5605 23 23 USE sbc_oce ! surface boundary condition: ocean 24 24 USE sbcisf ! ice shelf variable (fwfisf) 25 USE traicw ! ice shelf variable (fwfisf) 25 26 USE dynspg_oce ! surface pressure gradient variables 26 27 USE phycst ! physical constants … … 457 458 ELSE 458 459 zssh_frc(:,:) = zraur * z1_2 * ( emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:) & 459 & + rdivisf * ( fwfisf(:,:) + fwfisf_b(:,:) ) ) 460 & + rdivisf * ( fwfisf(:,:) + fwfisf_b(:,:) ) & 461 - qtot(:,:) - qtot_b(:,:) ) 460 462 ENDIF 461 463 #if defined key_asminc -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r5120 r5605 28 28 USE lbclnk ! ocean lateral boundary conditions 29 29 USE lib_fortran 30 USE traicw 30 31 31 32 IMPLICIT NONE … … 108 109 ! 109 110 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 110 z_fwf = glob_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + rdivisf * fwfisf(:,:) - 111 z_fwf = glob_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + rdivisf * fwfisf(:,:) -qtot(:,:) - snwice_fmass(:,:) ) ) / area ! sum over the global domain 111 112 zcoef = z_fwf * rcp 112 113 emp(:,:) = emp(:,:) - z_fwf * tmask(:,:,1) -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r5503 r5605 364 364 END DO 365 365 nk_rnf(ji,jj) = jk 366 ELSEIF( h_rnf(ji,jj) == 0._wp ) THEN ; nk_rnf(ji,jj) = 1 ! (need to be remove before sumition into the trunk) 366 367 ELSEIF( h_rnf(ji,jj) == -1._wp ) THEN ; nk_rnf(ji,jj) = 1 367 368 ELSEIF( h_rnf(ji,jj) == -999._wp ) THEN ; nk_rnf(ji,jj) = mbkt(ji,jj) -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r5541 r5605 56 56 ! !! * Interface 57 57 INTERFACE eos 58 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d 58 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d, eos_insitu_0d 59 59 END INTERFACE 60 60 ! … … 558 558 END SUBROUTINE eos_insitu_2d 559 559 560 SUBROUTINE eos_insitu_0d( pts, pdep, prd ) 561 !!---------------------------------------------------------------------- 562 !! *** ROUTINE eos_insitu_2d *** 563 !! 564 !! ** Purpose : Compute the in situ density (ratio rho/rau0) from 565 !! potential temperature and salinity using an equation of state 566 !! defined through the namelist parameter nn_eos. * 2D field case 567 !! 568 !! ** Action : - prd , the in situ density (no units) (unmasked) 569 !! 570 !!---------------------------------------------------------------------- 571 REAL(wp), DIMENSION( 2 ), INTENT(in ) :: pts ! 1 : potential temperature [Celcius] 572 ! ! 2 : salinity [psu] 573 REAL(wp), INTENT(in ) :: pdep ! depth [m] 574 REAL(wp), INTENT( out) :: prd ! in situ density 575 ! 576 INTEGER :: ji, jj, jk ! dummy loop indices 577 REAL(wp) :: zt , zh , zs ! local scalars 578 REAL(wp) :: zn , zn0, zn1, zn2, zn3 ! - - 579 !!---------------------------------------------------------------------- 580 ! 581 IF( nn_timing == 1 ) CALL timing_start('eos2d') 582 ! 583 prd = 0._wp 584 ! 585 SELECT CASE( nn_eos ) 586 ! 587 CASE( -1, 0 ) !== polynomial TEOS-10 / EOS-80 ==! 588 ! 589 ! 590 zh = pdep * r1_Z0 ! depth 591 zt = pts (jp_tem) * r1_T0 ! temperature 592 zs = SQRT( ABS( pts(jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity 593 ! 594 zn3 = EOS013*zt & 595 & + EOS103*zs+EOS003 596 ! 597 zn2 = (EOS022*zt & 598 & + EOS112*zs+EOS012)*zt & 599 & + (EOS202*zs+EOS102)*zs+EOS002 600 601 zn1 = (((EOS041*zt & 602 & + EOS131*zs+EOS031)*zt & 603 & + (EOS221*zs+EOS121)*zs+EOS021)*zt & 604 & + ((EOS311*zs+EOS211)*zs+EOS111)*zs+EOS011)*zt & 605 & + (((EOS401*zs+EOS301)*zs+EOS201)*zs+EOS101)*zs+EOS001 606 ! 607 zn0 = (((((EOS060*zt & 608 & + EOS150*zs+EOS050)*zt & 609 & + (EOS240*zs+EOS140)*zs+EOS040)*zt & 610 & + ((EOS330*zs+EOS230)*zs+EOS130)*zs+EOS030)*zt & 611 & + (((EOS420*zs+EOS320)*zs+EOS220)*zs+EOS120)*zs+EOS020)*zt & 612 & + ((((EOS510*zs+EOS410)*zs+EOS310)*zs+EOS210)*zs+EOS110)*zs+EOS010)*zt & 613 & + (((((EOS600*zs+EOS500)*zs+EOS400)*zs+EOS300)*zs+EOS200)*zs+EOS100)*zs+EOS000 614 ! 615 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 616 ! 617 prd = zn * r1_rau0 - 1._wp ! unmasked in situ density anomaly 618 ! 619 CASE( 1 ) !== simplified EOS ==! 620 ! 621 zt = pts (jp_tem) - 10._wp 622 zs = pts (jp_sal) - 35._wp 623 zh = pdep ! depth at the partial step level 624 ! 625 zn = - rn_a0 * ( 1._wp + 0.5_wp*rn_lambda1*zt + rn_mu1*zh ) * zt & 626 & + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs - rn_mu2*zh ) * zs & 627 & - rn_nu * zt * zs 628 ! 629 prd = zn * r1_rau0 ! unmasked in situ density anomaly 630 ! 631 END SELECT 632 ! 633 IF( nn_timing == 1 ) CALL timing_stop('eos0d') 634 ! 635 END SUBROUTINE eos_insitu_0d 560 636 561 637 SUBROUTINE rab_3d( pts, pab ) … … 921 997 pn2(ji,jj,jk) = grav * ( zaw * ( pts(ji,jj,jk-1,jp_tem) - pts(ji,jj,jk,jp_tem) ) & 922 998 & - zbw * ( pts(ji,jj,jk-1,jp_sal) - pts(ji,jj,jk,jp_sal) ) ) & 923 & / fse3w(ji,jj,jk) * tmask(ji,jj,jk)999 & / fse3w(ji,jj,jk) * wmask(ji,jj,jk) 924 1000 END DO 925 1001 END DO -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90
r5102 r5605 114 114 ! 115 115 CASE( 0 ) !== newtonian damping throughout the water column ==! 116 resto = 0.0_wp ! need to be restore before submissionto the trunk 117 !WHERE (un(3:11,3:7,:) .GE. 1.e-2) 118 ! resto(3:11,3:7,:) = 1._wp/1440._wp 119 !END WHERE 120 WHERE (un(12,3:7,:) .GE. 1.e-2) 121 resto(12,3:7,:) = 1._wp/1440._wp 122 END WHERE 116 123 DO jk = 1, jpkm1 117 124 DO jj = 2, jpjm1 … … 240 247 241 248 !Read in mask from file 242 CALL iom_open ( cn_resto, imask) 243 CALL iom_get ( imask, jpdom_autoglo, 'resto', resto) 244 CALL iom_close( imask ) 249 ! need to be restore before submission to the trunk 250 ! CALL iom_open ( cn_resto, imask) 251 ! CALL iom_get ( imask, jpdom_autoglo, 'resto', resto) 252 ! CALL iom_close( imask ) 253 resto = 0.0_wp 254 WHERE (un(2:10,2,:) .LE. 1.e-3) 255 resto(2:10,2,:) = 1._wp/86400._wp 256 END WHERE 245 257 ENDIF 246 258 -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r5431 r5605 26 26 USE trdtra ! trends manager: tracers 27 27 ! 28 USE traicw ! ice wall parametrization 28 29 USE in_out_manager ! I/O manager 29 30 USE prtctl ! Print control … … 287 288 END DO 288 289 ENDIF 290 291 292 ! compute trend 293 IF ( ln_traicw ) THEN 294 tsa(:,:,:,1) = tsa(:,:,:,1) + 0.5_wp * ( ricw_tsc(:,:,:,1) + ricw_tsc_b(:,:,:,1) ) 295 tsa(:,:,:,2) = tsa(:,:,:,2) + 0.5_wp * ( ricw_tsc(:,:,:,2) + ricw_tsc_b(:,:,:,2) ) 296 END IF 289 297 290 298 IF( l_trdtra ) THEN ! send trends for further diagnostics -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r5536 r5605 422 422 ! ! Active tracers 423 423 CALL tra_qsr_init ! penetrative solar radiation qsr 424 CALL tra_icw_init ! penetrative solar radiation qsr 424 425 CALL tra_bbc_init ! bottom heat flux 425 426 IF( lk_trabbl ) CALL tra_bbl_init ! advective (and/or diffusive) bottom boundary layer scheme -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/step.F90
r5510 r5605 120 120 CALL bn2 ( tsb, rab_b, rn2b ) ! before Brunt-Vaisala frequency 121 121 CALL bn2 ( tsn, rab_n, rn2 ) ! now Brunt-Vaisala frequency 122 IF ( ln_traicw ) CALL tra_icw( kstp ) ! name need to be changed the best way is a 3d runoff routine 123 ! it should simplified this, sbcisf, sbciscpl, sbcrnf and trasbc 122 124 ! 123 125 ! VERTICAL PHYSICS -
branches/NERC/dev_r5589_marine_glacier_termini/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r5501 r5605 30 30 31 31 USE traqsr ! solar radiation penetration (tra_qsr routine) 32 USE traicw ! ice wall melting parametrisation (tra_icw routine) 32 33 USE trasbc ! surface boundary condition (tra_sbc routine) 33 34 USE trabbc ! bottom boundary condition (tra_bbc routine)
Note: See TracChangeset
for help on using the changeset viewer.