Changeset 7506 for branches/2016/v3_6_CMIP6_ice_diagnostics
- Timestamp:
- 2016-12-15T20:41:18+01:00 (8 years ago)
- Location:
- branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r6963 r7506 320 320 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age (days) 321 321 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area (days) 322 322 323 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: bv_i !: brine volume 323 324 … … 406 407 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vice !: ice volume variation [m/s] 407 408 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vsnw !: snw volume variation [m/s] 409 410 ! 411 !!-------------------------------------------------------------------------- 412 !! * SIMIP extra diagnostics 413 !!-------------------------------------------------------------------------- 414 ! Extra sea ice diagnostics to address the data request 415 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t_si !: Temperature at Snow-ice interface (K) 416 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tm_si !: mean temperature at the snow-ice interface (K) 417 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dmi_dyn !: Change in ice mass due to ice dynamics (kg/m2/s) 418 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dms_mel !: Change in snow mass due to melting (kg/m2/s) 419 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dms_dyn !: Change in snow mass due to ice dynamics (kg/m2/s) 420 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dmtx_dyn !: X-component of total snow + ice mass transport (kg/m2/s) 421 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dmty_dyn !: X-component of total snow + ice mass transport (kg/m2/s) 422 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_fc_bo !: Bottom conduction flux (W/m2) 423 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_fc_su !: Surface conduction flux (W/m2) 424 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_utau_oi !: X-direction ocean-ice stress 425 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vtau_oi !: Y-direction ocean-ice stress 426 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dssh_dx !: X-direction sea-surface tilt term (N/m2) 427 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_dssh_dy !: X-direction sea-surface tilt term (N/m2) 428 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_corstrx !: X-direction coriolis stress (N/m2) 429 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_corstry !: Y-direction coriolis stress (N/m2) 430 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_intstrx !: X-direction internal stress (N/m2) 431 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_intstry !: Y-direction internal stress (N/m2) 432 408 433 ! 409 434 !!---------------------------------------------------------------------- … … 420 445 INTEGER :: ice_alloc 421 446 ! 422 INTEGER :: ierr(1 7), ii447 INTEGER :: ierr(18), ii 423 448 !!----------------------------------------------------------------- 424 449 … … 463 488 & et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i (jpi,jpj) , bvm_i(jpi,jpj) , & 464 489 & smt_i(jpi,jpj) , tm_su(jpi,jpj) , htm_i(jpi,jpj) , htm_s(jpi,jpj) , & 465 & om_i (jpi,jpj) 490 & om_i (jpi,jpj) , STAT=ierr(ii) ) 466 491 ii = ii + 1 467 492 ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) … … 502 527 & diag_smvi (jpi,jpj), diag_vice (jpi,jpj), diag_vsnw (jpi,jpj), STAT=ierr(ii) ) 503 528 529 ! * SIMIP data request diagnostics 530 ii = ii + 1 531 ALLOCATE( t_si (jpi,jpj,jpl) , tm_si(jpi,jpj) , & 532 diag_dmi_dyn(jpi,jpj) , & 533 diag_dms_mel(jpi,jpj) , diag_dms_dyn(jpi,jpj) , & 534 diag_dmtx_dyn(jpi,jpj), diag_dmty_dyn(jpi,jpj), & 535 diag_fc_bo(jpi,jpj) , diag_fc_su(jpi,jpj) , & 536 diag_utau_oi(jpi,jpj) , diag_vtau_oi(jpi,jpj) , & 537 diag_dssh_dx(jpi,jpj) , diag_dssh_dy(jpi,jpj) , & 538 diag_corstrx(jpi,jpj) , diag_corstry(jpi,jpj) , & 539 diag_intstrx(jpi,jpj) , diag_intstry(jpi,jpj) , & 540 STAT = ierr(ii) ) 541 504 542 ice_alloc = MAXVAL( ierr(:) ) 505 543 IF( ice_alloc /= 0 ) CALL ctl_warn('ice_alloc_2: failed to allocate arrays.') -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r6963 r7506 669 669 & + rhosn * vsrft(ij) * ( 1._wp - rn_fsnowrft ) ) * r1_rdtice ! fresh water source for ocean 670 670 671 ! SIMIP diagnostic 672 diag_dms_dyn(ji,jj) = diag_dms_dyn(ji,jj) - ( rhosn * vsrdg(ij) * ( 1._wp - rn_fsnowrdg ) & 673 & - rhosn * vsrft(ij) * ( 1._wp - rn_fsnowrft ) ) * r1_rdtice 674 diag_dmi_dyn(ji,jj) = diag_dmi_dyn(ji,jj) + vsw (ij) * rhoic * r1_rdtice 675 671 676 hfx_dyn(ji,jj) = hfx_dyn(ji,jj) + ( - esrdg(ij) * ( 1._wp - rn_fsnowrdg ) & 672 677 & - esrft(ij) * ( 1._wp - rn_fsnowrft ) ) * r1_rdtice ! heat sink for ocean (<0, W.m-2) -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r6964 r7506 124 124 REAL(wp) :: zm1, zm2, zm3, zmassU, zmassV ! ice/snow mass 125 125 REAL(wp) :: zdelta, zp_delf, zds2, zdt, zdt2, zdiv, zdiv2 ! temporary scalars 126 REAL(wp) :: zTauO, zTauE , zCor! temporary scalars126 REAL(wp) :: zTauO, zTauE ! temporary scalars 127 127 128 128 REAL(wp) :: zsig1, zsig2 ! internal ice stress … … 148 148 ! ocean surface (ssh_m) if ice is not embedded 149 149 ! ice top surface if ice is embedded 150 REAL(wp), POINTER, DIMENSION(:,:) :: zCor ! Coriolis stress array (SIMIP) 150 151 REAL(wp), POINTER, DIMENSION(:,:) :: zswitchU, zswitchV ! dummy arrays 151 152 REAL(wp), POINTER, DIMENSION(:,:) :: zmaskU, zmaskV ! mask for ice presence … … 162 163 CALL wrk_alloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 163 164 CALL wrk_alloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 165 CALL wrk_alloc( jpi,jpj, zCor) 164 166 165 167 #if defined key_lim2 && ! defined key_lim2_vp … … 325 327 END DO 326 328 END DO 329 327 330 CALL lbc_lnk( zmf, 'T', 1. ) 328 331 ! … … 445 448 446 449 ! Coriolis at V-points (energy conserving formulation) 447 zCor = - 0.25_wp * r1_e2v(ji,jj) * &450 zCor(ji,jj) = - 0.25_wp * r1_e2v(ji,jj) * & 448 451 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * u_ice(ji,jj ) + e2u(ji-1,jj ) * u_ice(ji-1,jj ) ) & 449 452 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 450 453 451 454 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 452 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) )455 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor(ji,jj) + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 453 456 454 457 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 460 463 END DO 461 464 CALL lbc_lnk( v_ice, 'V', -1. ) 465 466 ! SIMIP diag 467 IF ( jter .EQ. nn_nevp ) THEN 468 diag_corstry(:,:) = zCor(:,:) 469 ENDIF 462 470 463 471 #if defined key_agrif && defined key_lim2 … … 476 484 477 485 ! Coriolis at U-points (energy conserving formulation) 478 zCor = 0.25_wp * r1_e1u(ji,jj) * &486 zCor(ji,jj) = 0.25_wp * r1_e1u(ji,jj) * & 479 487 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * v_ice(ji ,jj) + e1v(ji ,jj-1) * v_ice(ji ,jj-1) ) & 480 488 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 481 489 482 490 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 483 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) )491 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor(ji,jj) + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 484 492 485 493 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 491 499 END DO 492 500 CALL lbc_lnk( u_ice, 'U', -1. ) 501 IF ( jter .EQ. nn_nevp ) THEN 502 diag_corstrx(:,:) = zCor(:,:) 503 ENDIF 493 504 494 505 #if defined key_agrif && defined key_lim2 … … 509 520 510 521 ! Coriolis at U-points (energy conserving formulation) 511 zCor = 0.25_wp * r1_e1u(ji,jj) * &522 zCor(ji,jj) = 0.25_wp * r1_e1u(ji,jj) * & 512 523 & ( zmf(ji ,jj) * ( e1v(ji ,jj) * v_ice(ji ,jj) + e1v(ji ,jj-1) * v_ice(ji ,jj-1) ) & 513 524 & + zmf(ji+1,jj) * ( e1v(ji+1,jj) * v_ice(ji+1,jj) + e1v(ji+1,jj-1) * v_ice(ji+1,jj-1) ) ) 514 525 515 526 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 516 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) )527 zTauE = zfU(ji,jj) + zTauU_ia(ji,jj) + zCor(ji,jj) + zspgU(ji,jj) + zTauO * ( u_oce(ji,jj) - u_ice(ji,jj) ) 517 528 518 529 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 540 551 541 552 ! Coriolis at V-points (energy conserving formulation) 542 zCor = - 0.25_wp * r1_e2v(ji,jj) * &553 zCor(ji,jj) = - 0.25_wp * r1_e2v(ji,jj) * & 543 554 & ( zmf(ji,jj ) * ( e2u(ji,jj ) * u_ice(ji,jj ) + e2u(ji-1,jj ) * u_ice(ji-1,jj ) ) & 544 555 & + zmf(ji,jj+1) * ( e2u(ji,jj+1) * u_ice(ji,jj+1) + e2u(ji-1,jj+1) * u_ice(ji-1,jj+1) ) ) 545 556 546 557 ! Sum of external forces (explicit solution) = F + tau_ia + Coriolis + spg + tau_io 547 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) )558 zTauE = zfV(ji,jj) + zTauV_ia(ji,jj) + zCor(ji,jj) + zspgV(ji,jj) + zTauO * ( v_oce(ji,jj) - v_ice(ji,jj) ) 548 559 549 560 ! ice velocity using implicit formulation (cf Madec doc & Bouillon 2009) … … 564 575 565 576 ENDIF 566 577 567 578 IF(ln_ctl) THEN ! Convergence test 568 579 DO jj = k_j1+1, k_jpj-1 … … 627 638 stress2_i (:,:) = zs2 (:,:) 628 639 stress12_i(:,:) = zs12(:,:) 640 641 ! SIMIP diagnostic internal stress 642 diag_dssh_dx(:,:) = zspgU(:,:) 643 diag_dssh_dy(:,:) = zspgV(:,:) 644 CALL lbc_lnk( diag_dssh_dx, 'U', -1. ) 645 CALL lbc_lnk( diag_dssh_dy, 'V', -1. ) 646 647 diag_intstrx(:,:) = zfU(:,:) 648 diag_intstry(:,:) = zfV(:,:) 649 CALL lbc_lnk( diag_intstrx, 'U', -1. ) 650 CALL lbc_lnk( diag_intstry, 'V', -1. ) 629 651 630 652 ! … … 670 692 CALL wrk_dealloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 671 693 CALL wrk_dealloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 694 CALL wrk_dealloc( jpi,jpj, zCor ) 672 695 673 696 END SUBROUTINE lim_rhg -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r6963 r7506 277 277 ! !== every ocean time-step ==! 278 278 ! 279 ! SIMIP diags 280 diag_utau_oi(:,:) = 0._wp 281 diag_vtau_oi(:,:) = 0._wp 279 282 DO jj = 2, jpjm1 !* update the stress WITHOUT a ice-ocean rotation angle 280 283 DO ji = fs_2, fs_jpim1 ! Vect. Opt. … … 287 290 utau(ji,jj) = ( 1._wp - zat_u ) * utau_oce(ji,jj) + zat_u * zutau_ice 288 291 vtau(ji,jj) = ( 1._wp - zat_v ) * vtau_oce(ji,jj) + zat_v * zvtau_ice 292 293 diag_utau_oi(ji,jj) = - zutau_ice 294 diag_vtau_oi(ji,jj) = - zvtau_ice 289 295 END DO 290 296 END DO -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r6399 r7506 502 502 503 503 CALL tab_2d_1d( nbpb, t_su_1d (1:nbpb), t_su(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 504 CALL tab_2d_1d( nbpb, t_si_1d (1:nbpb), t_si(:,:,jl) , jpi, jpj, npb(1:nbpb) ) ! MV SIMIP 2016 504 505 CALL tab_2d_1d( nbpb, sm_i_1d (1:nbpb), sm_i(:,:,jl) , jpi, jpj, npb(1:nbpb) ) 505 506 DO jk = 1, nlay_s … … 560 561 CALL tab_2d_1d( nbpb, hfx_err_rem_1d (1:nbpb), hfx_err_rem , jpi, jpj, npb(1:nbpb) ) 561 562 563 ! SIMIP diagnostics 564 CALL tab_2d_1d( nbpb, diag_dms_mel_1d (1:nbpb), diag_dms_mel, jpi, jpj, npb(1:nbpb) ) 565 CALL tab_2d_1d( nbpb, diag_fc_bo_1d (1:nbpb), diag_fc_bo , jpi, jpj, npb(1:nbpb) ) 566 CALL tab_2d_1d( nbpb, diag_fc_su_1d (1:nbpb), diag_fc_su , jpi, jpj, npb(1:nbpb) ) 567 562 568 CASE( 2 ) 563 569 … … 567 573 CALL tab_1d_2d( nbpb, a_i (:,:,jl) , npb, a_i_1d (1:nbpb) , jpi, jpj ) 568 574 CALL tab_1d_2d( nbpb, t_su(:,:,jl) , npb, t_su_1d (1:nbpb) , jpi, jpj ) 575 CALL tab_1d_2d( nbpb, t_si(:,:,jl) , npb, t_si_1d (1:nbpb) , jpi, jpj ) ! MV 2016 569 576 CALL tab_1d_2d( nbpb, sm_i(:,:,jl) , npb, sm_i_1d (1:nbpb) , jpi, jpj ) 570 577 DO jk = 1, nlay_s … … 613 620 CALL tab_1d_2d( nbpb, qns_ice(:,:,jl), npb, qns_ice_1d(1:nbpb) , jpi, jpj) 614 621 CALL tab_1d_2d( nbpb, ftr_ice(:,:,jl), npb, ftr_ice_1d(1:nbpb) , jpi, jpj ) 615 ! 622 623 ! SIMIP diagnostics 624 CALL tab_1d_2d( nbpb, diag_dms_mel , npb, diag_dms_mel_1d(1:nbpb) , jpi, jpj ) 625 CALL tab_1d_2d( nbpb, diag_fc_bo , npb, diag_fc_bo_1d(1:nbpb) , jpi, jpj ) 626 CALL tab_1d_2d( nbpb, diag_fc_su , npb, diag_fc_su_1d(1:nbpb) , jpi, jpj ) 616 627 END SELECT 617 628 -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
r6469 r7506 175 175 ! Contribution to mass flux 176 176 wfx_snw_1d(ji) = wfx_snw_1d(ji) + rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 177 ! SIMIP snow melt diagnostic 178 diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) - rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 177 179 ! updates 178 180 ht_s_1d(ji) = 0._wp … … 239 241 ! snow melting only = water into the ocean (then without snow precip), >0 240 242 wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 243 ! SIMIP snow melt diagnostic 244 diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) + rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 241 245 ! updates available heat + precipitations after melting 242 246 zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,1) * zqprec(ji) ) … … 261 265 ! snow melting only = water into the ocean (then without snow precip) 262 266 wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 267 ! SIMIP snow melt diagnostic 268 diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) + rhosn * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 263 269 ! updates available heat + thickness 264 270 zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * q_s_1d(ji,jk) ) … … 613 619 ! Contribution to mass flux 614 620 wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 621 ! SIMIP snow melt diagnostic 622 diag_dms_mel_1d(ji) = diag_dms_mel_1d(ji) + rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 615 623 ! 616 624 ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
r5512 r7506 697 697 & ( isnow(ji) * t_s_1d(ji,1) + ( 1._wp - isnow(ji) ) * t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji)) 698 698 END DO 699 699 700 ! 700 701 !-------------------------------------------------------------------------- … … 733 734 734 735 END DO ! End of the do while iterative procedure 736 737 ! MV SIMIP 2016 738 !--- Snow-ice interfacial temperature (diagnostic SIMIP) 739 DO ji = kideb, kiut 740 zfac = 1. / MAX( epsi10 , rcdsn * zh_i(ji) + ztcond_i(ji,1) * zh_s(ji) ) 741 t_si_1d(ji) = ( rcdsn * zh_i(ji) * t_s_1d(ji,1) + & 742 & ztcond_i(ji,1) * zh_s(ji) * t_i_1d(ji,1) ) * zfac 743 END DO 744 745 WHERE( zh_s .LT. epsi10) ; t_si_1d(:) = t_su_1d(:) ; END WHERE 746 ! END MV SIMIP 2016 735 747 736 748 IF( ln_icectl .AND. lwp ) THEN … … 751 763 fc_bo_i(ji) = - zkappa_i(ji,nlay_i) * ( zg1*(t_bo_1d(ji) - t_i_1d(ji,nlay_i)) ) 752 764 END DO 765 766 ! MV SIMIP 2016 767 !--- Conduction fluxes (positive downwards) 768 diag_fc_bo_1d(:) = diag_fc_bo_1d(:) + fc_bo_i(:) * a_i_1d(:) / at_i_1d(:) 769 diag_fc_su_1d(:) = diag_fc_su_1d(:) + fc_su(:) * a_i_1d(:) / at_i_1d(:) 770 ! END MV SIMIP 2016 753 771 754 772 ! --- computes sea ice energy of melting compulsory for limthd_dh --- ! -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
r6476 r7506 189 189 & sxxopw(:,:) , syopw(:,:), syyopw(:,:), sxyopw(:,:) ) 190 190 DO jl = 1, jpl 191 ! SIMIP mass transport diags 192 diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 191 193 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume --- 192 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) )193 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), &194 194 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 195 195 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 196 196 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 197 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & 197 diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 198 199 diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 200 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume 201 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 202 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume 198 203 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 204 diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 205 ! END SIMIP mass transport diags 206 207 ! CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume --- 208 ! & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 209 ! CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & 210 ! & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 211 ! CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 212 ! & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 213 ! CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & 214 ! & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 199 215 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl), & !--- ice salinity --- 200 216 & sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl) ) … … 230 246 & sxxopw(:,:) , syopw(:,:), syyopw(:,:), sxyopw(:,:) ) 231 247 DO jl = 1, jpl 248 diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 232 249 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume --- 233 250 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 234 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & 235 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 251 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 252 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 253 diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 254 255 diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) - ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 236 256 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 237 257 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 238 258 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & 239 259 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 260 diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) + ( rhoic * z0ice(:,:,jl) + rhosn * z0snw(:,:,jl) ) * r1_e12t(:,:) 261 262 ! CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume --- 263 ! & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 264 ! CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & 265 ! & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 266 ! CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 267 ! & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 268 ! CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & 269 ! & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 270 240 271 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl), & !--- ice salinity --- 241 272 & sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl) ) … … 266 297 ENDIF 267 298 299 ! SIMIP diags 300 diag_dmtx_dyn(:,:) = diag_dmtx_dyn(:,:) / ( rdt_ice * zusnit ) 301 diag_dmty_dyn(:,:) = diag_dmty_dyn(:,:) / ( rdt_ice * zusnit ) 302 268 303 !------------------------------------------- 269 304 ! Recover the properties from their contents … … 409 444 diag_trp_vs (ji,jj) = SUM( v_s(ji,jj,:) - zvsold(ji,jj,:) ) * r1_rdtice 410 445 diag_trp_smv(ji,jj) = SUM( smv_i(ji,jj,:) - zsmvold(ji,jj,:) ) * r1_rdtice 446 447 ! SIMIP diagnostics 448 diag_dms_dyn(ji,jj) = rhosn * diag_trp_vs(ji,jj) 449 diag_dmi_dyn(ji,jj) = rhoic * diag_trp_vi(ji,jj) 411 450 END DO 412 451 END DO … … 453 492 hfx_res(ji,jj) = hfx_res(ji,jj) + ( e_s(ji,jj,1,jl) - zes ) * r1_rdtice ! W.m-2 <0 454 493 hfx_res(ji,jj) = hfx_res(ji,jj) + ( SUM( e_i(ji,jj,1:nlay_i,jl) ) - zei ) * r1_rdtice ! W.m-2 <0 494 495 ! SIMIP diagnostic 496 diag_dms_dyn(ji,jj) = diag_dms_dyn(ji,jj) + ( v_s(ji,jj,jl) - zvs ) * rhosn * r1_rdtice 455 497 456 498 ENDIF -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90
r6311 r7506 180 180 ! necessary calls (at least for coupling) 181 181 CALL lim_var_glo2eqv 182 183 ! MV SIMIP 2016 small patch to clean ice age outputs 184 WHERE( ( a_i < 5.0e-3 ) .AND. ( ht_i < 1.5 * rn_himin ) ); oa_i(:,:,:) = a_i(:,:,:); END WHERE 185 182 186 CALL lim_var_agg(2) 183 187 -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
r6963 r7506 116 116 tm_i(:,:) = 0._wp 117 117 tm_su(:,:) = 0._wp 118 tm_si(:,:) = 0._wp ! MV SIMIP 2016 118 119 om_i (:,:) = 0._wp 119 120 DO jl = 1, jpl … … 123 124 rswitch = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi10 ) ) 124 125 tm_su(ji,jj) = tm_su(ji,jj) + rswitch * ( t_su(ji,jj,jl) - rt0 ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi10 ) 125 om_i (ji,jj) = om_i (ji,jj) + rswitch * oa_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi10 ) 126 tm_si(ji,jj) = tm_si(ji,jj) + rswitch * ( t_si(ji,jj,jl) - rt0 ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi10 ) 127 om_i (ji,jj) = om_i (ji,jj) + rswitch * oa_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi06 ) 126 128 END DO 127 129 END DO … … 141 143 tm_i = tm_i + rt0 142 144 tm_su = tm_su + rt0 145 tm_si = tm_si + rt0 143 146 ! 144 147 ENDIF … … 596 599 wfx_snw(ji,jj) = wfx_snw(ji,jj) - ( v_s(ji,jj,jl) - zvs ) * rhosn * r1_rdtice 597 600 hfx_res(ji,jj) = hfx_res(ji,jj) + ( e_s(ji,jj,1,jl) - zes ) * r1_rdtice ! W.m-2 <0 601 602 ! SIMIP snow melt diagnostic 603 diag_dms_mel_1d(ji) = diag_dms_mel(ji,jj) + ( v_s(ji,jj,jl) - zvs ) * rhosn * r1_rdtice 604 598 605 END DO 599 606 END DO -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r6965 r7506 54 54 INTEGER :: ji, jj, jk, jl ! dummy loop indices 55 55 REAL(wp) :: z1_365 56 REAL(wp) :: z2da, z2db, ztmp 56 REAL(wp) :: z2da, z2db, ztmp, zrho1, zrho2 57 REAL(wp) :: zdiag_area_nh, zdiag_extt_nh, zdiag_area_sh, zdiag_extt_sh, zdiag_volu_nh, zdiag_volu_sh 58 57 59 REAL(wp), POINTER, DIMENSION(:,:,:) :: zswi2 58 60 REAL(wp), POINTER, DIMENSION(:,:) :: z2d, zswi ! 2D workspace 61 59 62 !!------------------------------------------------------------------- 60 63 … … 75 78 DO jj = 1, jpj 76 79 DO ji = 1, jpi 77 zswi(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) 80 zswi(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice 78 81 END DO 79 82 END DO … … 130 133 CALL iom_put( "isnowhc" , et_s * zswi ) ! snow total heat content 131 134 CALL iom_put( "ibrinv" , bvm_i * zswi * 100. ) ! brine volume 132 CALL iom_put( "utau_ice" , utau_ice 133 CALL iom_put( "vtau_ice" , vtau_ice 135 CALL iom_put( "utau_ice" , utau_ice*zswi ) ! wind stress over ice along i-axis at I-point 136 CALL iom_put( "vtau_ice" , vtau_ice*zswi ) ! wind stress over ice along j-axis at I-point 134 137 CALL iom_put( "snowpre" , sprecip * 86400. ) ! snow precipitation 135 138 CALL iom_put( "micesalt" , smt_i * zswi ) ! mean ice salinity … … 180 183 CALL iom_put( "vfxsub_err" , wfx_err_sub * ztmp ) ! "excess" of sublimation sent to ocean 181 184 182 CALL iom_put( "afxtot" , afx_tot * rday) ! concentration tendency (total)183 CALL iom_put( "afxdyn" , afx_dyn * rday) ! concentration tendency (dynamics)184 CALL iom_put( "afxthd" , afx_thd * rday) ! concentration tendency (thermo)185 CALL iom_put( "afxtot" , afx_tot ) ! concentration tendency (total) 186 CALL iom_put( "afxdyn" , afx_dyn ) ! concentration tendency (dynamics) 187 CALL iom_put( "afxthd" , afx_thd ) ! concentration tendency (thermo) 185 188 186 189 CALL iom_put ('hfxthd' , hfx_thd(:,:) ) ! … … 203 206 CALL iom_put ('hfxspr' , hfx_spr(:,:) ) ! Heat content of snow precip 204 207 205 208 !-------------------------------- 209 ! Add-ons for SIMIP 210 !-------------------------------- 211 zrho1 = ( rau0 - rhoic ) / rau0; zrho2 = rhosn / rau0 212 213 CALL iom_put( "icethic" , htm_i * zswi ) ! ice thickness (SIMIP 2016) 214 CALL iom_put( "icepres" , zswi ) ! ice presence (1 or 0) (SIMIP 2016) 215 CALL iom_put( "snowthic" , htm_s * zswi ) ! snow thickness (SIMIP 2016) 216 CALL iom_put( "icemass" , rhoic * vt_i(:,:) * zswi ) ! ice mass per cell area (SIMIP 2016) 217 CALL iom_put( "snomass" , rhosn * vt_s(:,:) * zswi ) ! snow mass per cell area (SIMIP 2016) 218 CALL iom_put( "icesnt" , ( tm_si - rt0 ) * zswi ) ! snow-ice interface temperature (SIMIP 2016) 219 CALL iom_put( "icebot" , ( t_bo - rt0 ) * zswi ) ! ice bottom temperature (SIMIP 2016) 220 CALL iom_put( "icesmass" , smt_i * vt_i * rhoic / 1000. * zswi ) ! mass of salt in sea ice per cell area (SIMIP 2016) 221 CALL iom_put( "icefb" , ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi ) ! mass of salt in sea ice per cell area (SIMIP 2016) 222 223 CALL iom_put( "wfxsum" , wfx_sum ) ! Freshwater flux from sea-ice surface 224 CALL iom_put( "dmithd" , - wfx_bog - wfx_bom - wfx_sum & ! Sea-ice mass change from thermodynamics 225 & - wfx_sni - wfx_opw - wfx_res ) 226 CALL iom_put( "dmidyn" , diag_dmi_dyn ) ! Sea-ice mass change from dynamics 227 CALL iom_put( "dmiopw" , - wfx_opw ) ! Sea-ice mass change through growth in open water 228 CALL iom_put( "dmibog" , - wfx_bog ) ! Sea-ice mass change through basal growth 229 CALL iom_put( "dmisni" , - wfx_sni ) ! Sea-ice mass change through snow-to-ice conversion 230 CALL iom_put( "dmisum" , - wfx_sum ) ! Sea-ice mass change through surface melting 231 CALL iom_put( "dmibom" , - wfx_bom ) ! Sea-ice mass change through bottom melting 232 CALL iom_put( "dmtsub" , - wfx_sub ) ! Sea-ice mass change through evaporation and sublimation 233 CALL iom_put( "dmsspr" , - wfx_spr ) ! snow mass change through snow fall 234 CALL iom_put( "dmsssi" , wfx_sni*rhosn/rhoic ) ! snow mass change through snow-to-ice conversion 235 236 CALL iom_put( "dmsmel" , diag_dms_mel ) ! snow mass change through melt 237 CALL iom_put( "dmsdyn" , diag_dms_dyn ) ! snow mass change through dynamics 238 239 CALL iom_put( "hfxconbo" , diag_fc_bo ) ! bottom conduction flux 240 CALL iom_put( "hfxconsu" , diag_fc_su ) ! surface conduction flux 241 242 CALL iom_put( "wfxtot" , -wfx_ice ) ! total freshwater flux from sea ice 243 244 CALL iom_put( "dmtxdyn" , diag_dmtx_dyn ) ! X-component of sea-ice mass transport 245 CALL iom_put( "dmtydyn" , diag_dmty_dyn ) ! Y-component of sea-ice mass transport 246 247 CALL iom_put( "utau_oce" , diag_utau_oi*zswi ) ! X-component of ocean stress on sea ice 248 CALL iom_put( "vtau_oce" , diag_vtau_oi*zswi ) ! Y-component of ocean stress on sea ice 249 250 CALL iom_put( "dssh_dx" , diag_dssh_dx*zswi ) ! Sea-surface tilt term in force balance (x-component) 251 CALL iom_put( "dssh_dy" , diag_dssh_dy*zswi ) ! Sea-surface tilt term in force balance (y-component) 252 253 CALL iom_put( "corstrx" , diag_corstrx*zswi ) ! Coriolis force term in force balance (x-component) 254 CALL iom_put( "corstry" , diag_corstry*zswi ) ! Coriolis force term in force balance (y-component) 255 256 CALL iom_put( "intstrx" , diag_intstrx*zswi ) ! Internal force term in force balance (x-component) 257 CALL iom_put( "intstry" , diag_intstry*zswi ) ! Internal force term in force balance (y-component) 258 259 !-------------------------------- 260 ! Global ice diagnostics 261 !-------------------------------- 262 263 IF ( iom_use ( "NH_icearea" ) .OR. ( iom_use( "NH_icevolu" ) ) THEN ! NH ice area 264 265 WHERE( fcor > 0 ); zswi(:,:) = 1.; 266 ELSEWHERE ; zswi(:,:) = 0. 267 END WHERE 268 269 IF ( iom_use ( "NH_icearea" ) THEN 270 zdiag_area_nh = glob_sum( at_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 271 CALL iom_put( "NH_icearea", zdiag_area_nh ) 272 ENDIF 273 IF ( iom_use ( "NH_icevolu" ) THEN 274 zdiag_volu_nh = glob_sum( vt_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 275 CALL iom_put( "NH_icevolu", zdiag_volu_nh ) 276 ENDIF 277 278 ENDIF 279 280 IF ( iom_use ( "NH_iceextt" ) ) THEN ! NH ice extt 281 282 WHERE( fcor > 0 .AND. at_i > 0.15 ); zswi(:,:) = 1.; 283 ELSEWHERE ; zswi(:,:) = 0. 284 END WHERE 285 286 zdiag_extt_nh = glob_sum( zswi(:,:) * e12t(:,:) ) / 1.0e12 287 CALL iom_put( "NH_iceextt", zdiag_extt_nh ) 288 289 ENDIF 290 291 IF ( iom_use ( "SH_icearea" ) .OR. ( iom_use( "SH_icevolu" ) ) THEN ! SH ice area / volume 292 293 WHERE( fcor < 0 ); zswi(:,:) = 1.; 294 ELSEWHERE ; zswi(:,:) = 0. 295 END WHERE 296 297 IF ( iom_use ( "SH_icearea" ) THEN 298 zdiag_area_sh = glob_sum( at_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 299 CALL iom_put( "SH_icearea", zdiag_area_sh ) 300 ENDIF 301 IF ( iom_use ( "SH_icevolu" ) THEN 302 zdiag_volu_sh = glob_sum( vt_i(:,:) * zswi(:,:) * e12t(:,:) ) / 1.0e12 303 CALL iom_put( "SH_icevolu", zdiag_volu_sh ) 304 ENDIF 305 306 ENDIF 307 308 IF ( iom_use ( "SH_iceextt" ) ) THEN ! SH ice extt 309 310 WHERE( fcor < 0 .AND. at_i > 0.15 ); zswi(:,:) = 1.; 311 ELSEWHERE ; zswi(:,:) = 0. 312 END WHERE 313 314 zdiag_extt_sh = glob_sum( zswi(:,:) * e12t(:,:) )/ 1.0e12 315 316 CALL iom_put( "SH_iceextt", zdiag_extt_sh ) 317 318 ENDIF 319 206 320 !-------------------------------- 207 321 ! Output values for each category -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90
r6399 r7506 104 104 105 105 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: t_su_1d !: <==> the 2D t_su 106 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: t_si_1d !: <==> the 2D t_si MV SIMIP 2016 106 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: a_i_1d !: <==> the 2D a_i 107 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: ht_i_1d !: <==> the 2D ht_s … … 128 129 INTEGER , PUBLIC :: jiindex_1d ! 1D index of debugging point 129 130 131 ! Extra SIMIP data request diagnostics 132 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: diag_dms_mel_1d !: <==> the 2D diag_dms_mel 133 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: diag_fc_bo_1d !: <==> the 2D diag_fc_bo 134 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: diag_fc_su_1d !: <==> the 2D diag_fc_su 135 130 136 !!---------------------------------------------------------------------- 131 137 !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) … … 140 146 !!---------------------------------------------------------------------! 141 147 INTEGER :: thd_ice_alloc ! return value 142 INTEGER :: ierr( 3)148 INTEGER :: ierr(4) 143 149 !!---------------------------------------------------------------------! 144 150 … … 165 171 & dsm_i_si_1d(jpij) , hicol_1d (jpij) , STAT=ierr(2) ) 166 172 ! 167 ALLOCATE( t_su_1d (jpij) , a_i_1d (jpij) , ht_i_1d (jpij) , &173 ALLOCATE( t_su_1d (jpij) , t_si_1d (jpij) , a_i_1d (jpij) , ht_i_1d (jpij) , & 168 174 & ht_s_1d (jpij) , fc_su (jpij) , fc_bo_i (jpij) , & 169 175 & dh_s_tot (jpij) , dh_i_surf(jpij) , dh_i_sub (jpij) , & … … 172 178 & q_i_1d(jpij,nlay_i+1) , q_s_1d(jpij,nlay_s) , & 173 179 & qh_i_old(jpij,0:nlay_i+1), h_i_old(jpij,0:nlay_i+1) , STAT=ierr(3)) 174 ! 180 ! Extra SIMIP diagnostics 181 ALLOCATE( diag_dms_mel_1d(jpij) , & 182 & diag_fc_bo_1d(jpij) , diag_fc_su_1d(jpij) , & 183 & STAT=ierr(4) ) 184 175 185 thd_ice_alloc = MAXVAL( ierr ) 176 186 -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r6963 r7506 611 611 diag_heat(:,:) = 0._wp ; diag_smvi(:,:) = 0._wp ; 612 612 diag_vice(:,:) = 0._wp ; diag_vsnw(:,:) = 0._wp ; 613 614 ! SIMIP diagnostics 615 diag_dms_mel(:,:) = 0._wp ; diag_dms_dyn(:,:) = 0._wp 616 diag_dmtx_dyn(:,:) = 0._wp ; diag_dmty_dyn(:,:) = 0._wp 617 diag_fc_bo(:,:) = 0._wp ; diag_fc_su(:,:) = 0._wp 613 618 614 619 END SUBROUTINE sbc_lim_diag0
Note: See TracChangeset
for help on using the changeset viewer.