Changeset 12372
- Timestamp:
- 2020-02-12T13:37:21+01:00 (5 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/cfgs/SHARED/field_def_nemo-oce.xml
r12252 r12372 388 388 <field id="hflx_rain_cea" long_name="heat flux due to rainfall" standard_name="temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water" unit="W/m2" /> 389 389 <field id="hflx_evap_cea" long_name="heat flux due to evaporation" standard_name="temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water" unit="W/m2" /> 390 <field id="hflx_prec_cea" long_name="heat flux due to all precip" standard_name="temperature_flux_due_to_all_precip_expressed_as_heat_flux_into_sea_water" unit="W/m2" /> 390 391 <field id="hflx_snow_cea" long_name="heat flux due to snow falling" standard_name="heat_flux_onto_ocean_and_ice_due_to_snow_thermodynamics" unit="W/m2" /> 391 392 <field id="hflx_snow_ai_cea" long_name="heat flux due to snow falling over ice" standard_name="heat_flux_onto_ice_due_to_snow_thermodynamics" unit="W/m2" /> -
NEMO/branches/2019/dev_r11943_MERGE_2019/cfgs/SHARED/grid_def_nemo.xml
r12252 r12372 102 102 <axis axis_ref="depthw" /> 103 103 <axis axis_ref="basin" /> 104 </grid> 105 106 <grid id="grid_ptr_W_GLO"> 107 <domain domain_ref="ptr" /> 108 <axis axis_ref="depthw" /> 109 <scalar> 110 <extract_axis position="0" /> 111 </scalar> 112 </grid> 113 114 <grid id="grid_ptr_W_ATL"> 115 <domain domain_ref="ptr" /> 116 <axis axis_ref="depthw" /> 117 <scalar> 118 <extract_axis position="1" /> 119 </scalar> 120 </grid> 121 122 <grid id="grid_ptr_W_IND"> 123 <domain domain_ref="ptr" /> 124 <axis axis_ref="depthw" /> 125 <scalar> 126 <extract_axis position="2" /> 127 </scalar> 104 128 </grid> 105 129 -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DYN/dynatf.F90
r12340 r12372 102 102 REAL(wp) :: zue3a, zue3n, zue3b, zcoef ! local scalars 103 103 REAL(wp) :: zve3a, zve3n, zve3b, z1_2dt ! - - 104 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zue, zve 104 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zue, zve, zwfld 105 105 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze3t_f, ze3u_f, ze3v_f, zua, zva 106 106 !!---------------------------------------------------------------------- … … 191 191 ! Time-filtered scale factor at t-points 192 192 ! ---------------------------------------------------- 193 ALLOCATE( ze3t_f(jpi,jpj,jpk) )193 ALLOCATE( ze3t_f(jpi,jpj,jpk), zwfld(jpi,jpj) ) 194 194 DO jk = 1, jpkm1 195 195 ze3t_f(:,:,jk) = pe3t(:,:,jk,Kmm) + atfp * ( pe3t(:,:,jk,Kbb) - 2._wp * pe3t(:,:,jk,Kmm) + pe3t(:,:,jk,Kaa) ) 196 196 END DO 197 197 ! Add volume filter correction: compatibility with tracer advection scheme 198 ! => time filter + conservation correction (only at the first level)198 ! => time filter + conservation correction 199 199 zcoef = atfp * rdt * r1_rau0 200 201 ze3t_f(:,:,1) = ze3t_f(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 202 203 IF ( ln_rnf ) THEN 204 IF( ln_rnf_depth ) THEN 205 DO_3D_11_11( 1, jpkm1 ) 206 IF( jk <= nk_rnf(ji,jj) ) THEN 207 ze3t_f(ji,jj,jk) = ze3t_f(ji,jj,jk) - zcoef * ( - rnf_b(ji,jj) + rnf(ji,jj) ) & 208 & * ( pe3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) ) * tmask(ji,jj,jk) 209 ENDIF 210 END_3D 211 ELSE 212 ze3t_f(:,:,1) = ze3t_f(:,:,1) - zcoef * ( -rnf_b(:,:) + rnf(:,:))*tmask(:,:,1) 213 ENDIF 214 END IF 200 zwfld(:,:) = emp_b(:,:) - emp(:,:) 201 IF ( ln_rnf ) zwfld(:,:) = zwfld(:,:) - ( rnf_b(:,:) - rnf(:,:) ) 202 DO jk = 1, jpkm1 203 ze3t_f(:,:,jk) = ze3t_f(:,:,jk) - zcoef * zwfld(:,:) * tmask(:,:,jk) & 204 & * pe3t(:,:,jk,Kmm) / ( ht(:,:) + 1._wp - ssmask(:,:) ) 205 END DO 215 206 ! 216 207 ! ice shelf melting (deal separately as it can be in depth) … … 254 245 ENDIF 255 246 ! 256 DEALLOCATE( ze3t_f )247 DEALLOCATE( ze3t_f, zwfld ) 257 248 ENDIF 258 249 ! -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfdynatf.F90
r12340 r12372 14 14 15 15 USE phycst , ONLY: r1_rau0 ! physical constant 16 USE dom_oce, ONLY: e3t, r1_e1e2t ! time and space domain16 USE dom_oce, ONLY: tmask, ssmask, ht, e3t, r1_e1e2t ! time and space domain 17 17 18 18 USE in_out_manager … … 77 77 ! 78 78 ! compute fwf conservation correction 79 zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / phtbl(:,:) * r1_rau079 zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / ( ht(:,:) + 1._wp - ssmask(:,:) ) * r1_rau0 80 80 ! 81 ! add the increment in the tbl 82 DO_3D_11_11( 1, jpkm1 ) 83 IF( ktop(ji,jj) <= jk .AND. jk < kbot(ji,jj) ) THEN 84 pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) 85 ELSEIF ( jk == kbot(ji,jj) ) THEN 86 pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) * pfrac(ji,jj) 87 ENDIF 88 END_3D 81 ! add the increment 82 DO jk = 1, jpkm1 83 pe3t_f(:,:,jk) = pe3t_f(:,:,jk) - tmask(:,:,jk) * zfwfinc(:,:) * e3t(:,:,jk,Kmm) 84 END DO 89 85 ! 90 86 END SUBROUTINE isf_dynatf_mlt -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/SBC/fldread.F90
r12350 r12372 571 571 572 572 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: pdta_read ! data read in bdy file 573 REAL(wp), DIMENSION(:,:,:), INTENT(in out) :: pdta_read_z ! depth of the data read in bdy file574 REAL(wp), DIMENSION(:,:,:), INTENT(in out) :: pdta_read_dz ! thickness of the levels in bdy file573 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: pdta_read_z ! depth of the data read in bdy file 574 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: pdta_read_dz ! thickness of the levels in bdy file 575 575 REAL(wp), DIMENSION(:,:,:), INTENT( out) :: pdta ! output field on model grid (2 dimensional) 576 576 REAL(wp) , INTENT(in ) :: pfv ! fillvalue of the data read in bdy file … … 580 580 INTEGER, OPTIONAL , INTENT(in ) :: Kmm ! ocean time level index 581 581 !! 582 INTEGER :: ipi! length of boundary data on local process583 INTEGER :: ipkb! number of vertical levels in boundary data file584 INTEGER :: jb, ji, jj, jk, jkb ! loop counters585 REAL(wp) :: zcoef586 REAL(wp) :: zl, zi, zh ! tmp variable for current depth and interpolation factor587 REAL(wp) :: zfv_alt, ztrans, ztrans_new ! fillvalue and alternative -ABS(pfv)588 REAL(wp), DIMENSION(jpk) :: zdepth, zdhalf! level and half-level depth582 INTEGER :: ipi ! length of boundary data on local process 583 INTEGER :: ipkb ! number of vertical levels in boundary data file 584 INTEGER :: ipkmax ! number of vertical levels in boundary data file where no mask 585 INTEGER :: jb, ji, jj, jk, jkb ! loop counters 586 REAL(wp) :: zcoef, zi ! 587 REAL(wp) :: ztrans, ztrans_new ! transports 588 REAL(wp), DIMENSION(jpk) :: zdepth, zdhalf ! level and half-level depth 589 589 !!--------------------------------------------------------------------- 590 590 … … 592 592 ipkb = SIZE( pdta_read, 3 ) 593 593 594 zfv_alt = -ABS(pfv) ! set _FillValue < 0 as we make use of MAXVAL and MAXLOC later595 !596 WHERE( pdta_read == pfv )597 pdta_read_z = zfv_alt ! safety: put fillvalue into external depth field so consistent with data598 pdta_read_dz = 0._wp ! safety: put 0._wp into external thickness factors to ensure transport is correct599 ENDWHERE600 601 594 DO jb = 1, ipi 602 595 ji = idx_bdy(kbdy)%nbi(jb,kgrd) 603 596 jj = idx_bdy(kbdy)%nbj(jb,kgrd) 604 zh = SUM(pdta_read_dz(jb,1,:) ) 605 ! 597 ! 598 ! --- max jk where input data /= FillValue --- ! 599 ipkmax = 1 600 DO jkb = 2, ipkb 601 IF( pdta_read(jb,1,jkb) /= pfv ) ipkmax = MAX( ipkmax, jkb ) 602 END DO 603 ! 604 ! --- calculate depth at t,u,v points --- ! 606 605 SELECT CASE( kgrd ) 607 CASE(1) 608 ! depth of T points: 606 CASE(1) ! depth of T points: 609 607 zdepth(:) = gdept(ji,jj,:,Kmm) 610 CASE(2) 611 ! depth of U points: we must not use gdept_n as we don't want to do a communication 612 ! --> copy what is done for gdept_n in domvvl... 608 CASE(2) ! depth of U points: we must not use gdept_n as we don't want to do a communication 609 ! --> copy what is done for gdept_n in domvvl... 613 610 zdhalf(1) = 0.0_wp 614 611 zdepth(1) = 0.5_wp * e3uw(ji,jj,1,Kmm) … … 620 617 zcoef = ( umask(ji,jj,jk) - wumask(ji,jj,jk) ) 621 618 zdhalf(jk) = zdhalf(jk-1) + e3u(ji,jj,jk-1,Kmm) 622 zdepth(jk) = zcoef * ( zdhalf(jk ) + 0.5* e3uw(ji,jj,jk,Kmm)) &623 & + (1 -zcoef) * ( zdepth(jk-1) +e3uw(ji,jj,jk,Kmm))619 zdepth(jk) = zcoef * ( zdhalf(jk ) + 0.5_wp * e3uw(ji,jj,jk,Kmm)) & 620 & + (1._wp-zcoef) * ( zdepth(jk-1) + e3uw(ji,jj,jk,Kmm)) 624 621 END DO 625 CASE(3) 626 ! depth of V points: we must not use gdept_n as we don't want to do a communication 627 ! --> copy what is done for gdept_n in domvvl... 622 CASE(3) ! depth of V points: we must not use gdept_n as we don't want to do a communication 623 ! --> copy what is done for gdept_n in domvvl... 628 624 zdhalf(1) = 0.0_wp 629 625 zdepth(1) = 0.5_wp * e3vw(ji,jj,1,Kmm) … … 635 631 zcoef = ( vmask(ji,jj,jk) - wvmask(ji,jj,jk) ) 636 632 zdhalf(jk) = zdhalf(jk-1) + e3v(ji,jj,jk-1,Kmm) 637 zdepth(jk) = zcoef * ( zdhalf(jk ) + 0.5* e3vw(ji,jj,jk,Kmm)) &638 & + (1 -zcoef) * ( zdepth(jk-1) +e3vw(ji,jj,jk,Kmm))633 zdepth(jk) = zcoef * ( zdhalf(jk ) + 0.5_wp * e3vw(ji,jj,jk,Kmm)) & 634 & + (1._wp-zcoef) * ( zdepth(jk-1) + e3vw(ji,jj,jk,Kmm)) 639 635 END DO 640 636 END SELECT 641 ! 642 DO jk = 1, jpk643 IF( zdepth(jk) < pdta_read_z(jb,1, 1) ) THEN ! above the first level of external data644 pdta(jb,1,jk) = pdta_read(jb,1,1)645 ELSEIF( zdepth(jk) > pdta_read_z(jb,1,ipkb) ) THEN ! below the last level of external data646 pdta(jb,1,jk) = pdta_read(jb,1,MAXLOC(pdta_read_z(jb,1,:),1))647 ELSE ! inbetween: vertical interpolation between jkb & jkb+1648 DO jkb = 1, ipkb-1 ! when gdept_n(jkb) < zdepth(jk) < gdept_n(jkb+1)649 IF( ( ( zdepth(jk) - pdta_read_z(jb,1,jkb) ) * ( zdepth(jk) - pdta_read_z(jb,1,jkb+1) ) <= 0._wp ) &650 & .AND. ( pdta_read_z(jb,1,jkb+1) /= zfv_alt) ) THEN! linear interpolation between 2 levels637 ! 638 ! --- interpolate bdy data on the model grid --- ! 639 DO jk = 1, jpk 640 IF( zdepth(jk) <= pdta_read_z(jb,1,1) ) THEN ! above the first level of external data 641 pdta(jb,1,jk) = pdta_read(jb,1,1) 642 ELSEIF( zdepth(jk) > pdta_read_z(jb,1,ipkmax) ) THEN ! below the last level of external data /= FillValue 643 pdta(jb,1,jk) = pdta_read(jb,1,ipkmax) 644 ELSE ! inbetween: vertical interpolation between jkb & jkb+1 645 DO jkb = 1, ipkmax-1 646 IF( ( ( zdepth(jk) - pdta_read_z(jb,1,jkb) ) * ( zdepth(jk) - pdta_read_z(jb,1,jkb+1) ) ) <= 0._wp ) THEN ! linear interpolation between 2 levels 651 647 zi = ( zdepth(jk) - pdta_read_z(jb,1,jkb) ) / ( pdta_read_z(jb,1,jkb+1) - pdta_read_z(jb,1,jkb) ) 652 pdta(jb,1,jk) = pdta_read(jb,1,jkb) + ( pdta_read (jb,1,jkb+1) - pdta_read (jb,1,jkb) ) * zi648 pdta(jb,1,jk) = pdta_read(jb,1,jkb) + zi * ( pdta_read(jb,1,jkb+1) - pdta_read(jb,1,jkb) ) 653 649 ENDIF 654 650 END DO … … 657 653 ! 658 654 END DO ! ipi 659 660 IF(kgrd == 2) THEN ! do we need to adjust the transport term? 655 656 ! --- mask data and adjust transport --- ! 657 SELECT CASE( kgrd ) 658 659 CASE(1) ! mask data (probably unecessary) 661 660 DO jb = 1, ipi 662 661 ji = idx_bdy(kbdy)%nbi(jb,kgrd) 663 662 jj = idx_bdy(kbdy)%nbj(jb,kgrd) 664 zh = SUM(pdta_read_dz(jb,1,:) ) 663 DO jk = 1, jpk 664 pdta(jb,1,jk) = pdta(jb,1,jk) * tmask(ji,jj,jk) 665 END DO 666 END DO 667 668 CASE(2) ! adjust the U-transport term 669 DO jb = 1, ipi 670 ji = idx_bdy(kbdy)%nbi(jb,kgrd) 671 jj = idx_bdy(kbdy)%nbj(jb,kgrd) 665 672 ztrans = 0._wp 673 DO jkb = 1, ipkb ! calculate transport on input grid 674 IF( pdta_read(jb,1,jkb) /= pfv ) ztrans = ztrans + pdta_read(jb,1,jkb) * pdta_read_dz(jb,1,jkb) 675 ENDDO 666 676 ztrans_new = 0._wp 667 DO jkb = 1, ipkb ! calculate transport on input grid668 ztrans = ztrans + pdta_read(jb,1,jkb) * pdta_read_dz(jb, 1,jkb)669 ENDDO670 677 DO jk = 1, jpk ! calculate transport on model grid 671 678 ztrans_new = ztrans_new + pdta(jb,1,jk ) * e3u(ji,jj,jk,Kmm ) * umask(ji,jj,jk) … … 674 681 IF(ldtotvel) THEN ! bdy data are total velocity so adjust bt transport term to match input data 675 682 pdta(jb,1,jk) = ( pdta(jb,1,jk) + ( ztrans - ztrans_new ) * r1_hu(ji,jj,Kmm) ) * umask(ji,jj,jk) 676 ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero683 ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero 677 684 pdta(jb,1,jk) = pdta(jb,1,jk) + ( 0._wp - ztrans_new ) * r1_hu(ji,jj,Kmm) * umask(ji,jj,jk) 678 685 ENDIF 679 686 ENDDO 680 687 ENDDO 681 ENDIF 682 683 IF(kgrd == 3) THEN ! do we need to adjust the transport term? 688 689 CASE(3) ! adjust the V-transport term 684 690 DO jb = 1, ipi 685 691 ji = idx_bdy(kbdy)%nbi(jb,kgrd) 686 692 jj = idx_bdy(kbdy)%nbj(jb,kgrd) 687 zh = SUM(pdta_read_dz(jb,1,:) )688 693 ztrans = 0._wp 694 DO jkb = 1, ipkb ! calculate transport on input grid 695 IF( pdta_read(jb,1,jkb) /= pfv ) ztrans = ztrans + pdta_read(jb,1,jkb) * pdta_read_dz(jb,1,jkb) 696 ENDDO 689 697 ztrans_new = 0._wp 690 DO jkb = 1, ipkb ! calculate transport on input grid691 ztrans = ztrans + pdta_read(jb,1,jkb) * pdta_read_dz(jb, 1,jkb)692 ENDDO693 698 DO jk = 1, jpk ! calculate transport on model grid 694 ztrans_new = ztrans_new + pdta(jb,1,jk ) * 699 ztrans_new = ztrans_new + pdta(jb,1,jk ) * e3v(ji,jj,jk,Kmm ) * vmask(ji,jj,jk) 695 700 ENDDO 696 701 DO jk = 1, jpk ! make transport correction 697 702 IF(ldtotvel) THEN ! bdy data are total velocity so adjust bt transport term to match input data 698 703 pdta(jb,1,jk) = ( pdta(jb,1,jk) + ( ztrans - ztrans_new ) * r1_hv(ji,jj,Kmm) ) * vmask(ji,jj,jk) 699 ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero704 ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero 700 705 pdta(jb,1,jk) = pdta(jb,1,jk) + ( 0._wp - ztrans_new ) * r1_hv(ji,jj,Kmm) * vmask(ji,jj,jk) 701 706 ENDIF 702 707 ENDDO 703 708 ENDDO 704 END IF709 END SELECT 705 710 706 711 END SUBROUTINE fld_bdy_interp -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA/traatf.F90
r12353 r12372 252 252 INTEGER :: ji, jj, jk, jn ! dummy loop indices 253 253 REAL(wp) :: zfact, zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d ! local scalar 254 REAL(wp) :: zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d 254 REAL(wp) :: zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d, zscale ! - - 255 255 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrd_atf 256 256 !!---------------------------------------------------------------------- … … 295 295 ztc_f = ztc_n + atfp * ztc_d 296 296 ! 297 ! Add asselin correction on scale factors: 298 zscale = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm) / ( ht(ji,jj) + 1._wp - ssmask(ji,jj) ) 299 ze3t_f = ze3t_f - zfact2 * zscale * ( emp_b(ji,jj) - emp(ji,jj) ) 300 IF ( ll_rnf ) ze3t_f = ze3t_f + zfact2 * zscale * ( rnf_b(ji,jj) - rnf(ji,jj) ) 301 IF ( ll_isf ) THEN 302 IF ( ln_isfcav_mlt ) ze3t_f = ze3t_f - zfact2 * zscale * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) 303 IF ( ln_isfpar_mlt ) ze3t_f = ze3t_f - zfact2 * zscale * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) 304 ENDIF 305 ! 297 306 IF( jk == mikt(ji,jj) ) THEN ! first level 298 ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj) )299 307 ztc_f = ztc_f - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 300 308 ENDIF 301 IF( ln_rnf_depth ) THEN302 ! Rivers are not just at the surface must go down to nk_rnf(ji,jj)303 IF( jk <= nk_rnf(ji,jj) ) THEN304 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) ) &305 & * ( e3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) )306 ENDIF307 ELSE308 IF( jk == 1 ) THEN ! first level309 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) )310 ENDIF311 ENDIF312 !313 309 ! 314 310 ! solar penetration (temperature only) … … 331 327 ztc_f = ztc_f - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 332 328 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) 333 ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) &334 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj)335 329 END IF 336 330 ! level partially include in Losch_2008 ice shelf boundary layer … … 338 332 ztc_f = ztc_f - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 339 333 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 340 ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) &341 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj)342 334 END IF 343 335 END IF … … 349 341 ztc_f = ztc_f - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) ) & 350 342 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) 351 ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) &352 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj)353 343 END IF 354 344 ! level partially include in Losch_2008 ice shelf boundary layer … … 356 346 ztc_f = ztc_f - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) ) & 357 347 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 358 ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) &359 & * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj)360 348 END IF 361 349 END IF … … 367 355 IF ( ln_rstart .AND. kt == nit000+1 ) THEN 368 356 ztc_f = ztc_f + zfact1 * risfcpl_tsc(ji,jj,jk,jn) * r1_e1e2t(ji,jj) 357 ! Shouldn't volume increment be spread according thanks to zscale ? 369 358 ze3t_f = ze3t_f - zfact1 * risfcpl_vol(ji,jj,jk ) * r1_e1e2t(ji,jj) 370 359 END IF -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zprod.F90
r12340 r12372 323 323 CALL iom_put( "LDlight" , zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ) 324 324 CALL iom_put( "TPP" , ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ) ! total primary production 325 CALL iom_put( "TPNEW" , ( zpro rcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ) ! total new production325 CALL iom_put( "TPNEW" , ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ) ! total new production 326 326 CALL iom_put( "TPBFE" , ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:) ) ! total biogenic iron production 327 327 CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s
Note: See TracChangeset
for help on using the changeset viewer.