diff --git a/src/ICE/icectl.F90 b/src/ICE/icectl.F90 index e66fe77985a8370c07564c29a8c63fb9b154e4c8..ad20e6734e4f96454372ef4f8ea548145b473d4a 100644 --- a/src/ICE/icectl.F90 +++ b/src/ICE/icectl.F90 @@ -691,49 +691,52 @@ CONTAINS CALL prt_ctl_info(' ========== ') CALL prt_ctl_info(' - Cell values : ') CALL prt_ctl_info(' ~~~~~~~~~~~~~ ') - CALL prt_ctl(tab2d_1=e1e2t , clinfo1=' cell area :') - CALL prt_ctl(tab2d_1=at_i , clinfo1=' at_i :') - CALL prt_ctl(tab2d_1=ato_i , clinfo1=' ato_i :') - CALL prt_ctl(tab2d_1=vt_i , clinfo1=' vt_i :') - CALL prt_ctl(tab2d_1=vt_s , clinfo1=' vt_s :') - CALL prt_ctl(tab2d_1=divu_i , clinfo1=' divu_i :') - CALL prt_ctl(tab2d_1=delta_i , clinfo1=' delta_i :') - CALL prt_ctl(tab2d_1=stress1_i , clinfo1=' stress1_i :') - CALL prt_ctl(tab2d_1=stress2_i , clinfo1=' stress2_i :') - CALL prt_ctl(tab2d_1=stress12_i , clinfo1=' stress12_i :') - CALL prt_ctl(tab2d_1=strength , clinfo1=' strength :') - CALL prt_ctl(tab2d_1=delta_i , clinfo1=' delta_i :') - CALL prt_ctl(tab2d_1=u_ice , clinfo1=' u_ice :', tab2d_2=v_ice , clinfo2=' v_ice :') + CALL prt_ctl(tab2d_1=e1e2t , clinfo1=' cell area :', mask1=tmask) + CALL prt_ctl(tab2d_1=at_i , clinfo1=' at_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=ato_i , clinfo1=' ato_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=vt_i , clinfo1=' vt_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=vt_s , clinfo1=' vt_s :', mask1=tmask) + CALL prt_ctl(tab2d_1=divu_i , clinfo1=' divu_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=delta_i , clinfo1=' delta_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=stress1_i , clinfo1=' stress1_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=stress2_i , clinfo1=' stress2_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=stress12_i , clinfo1=' stress12_i :') ! should be fmask + CALL prt_ctl(tab2d_1=strength , clinfo1=' strength :', mask1=tmask) + CALL prt_ctl(tab2d_1=delta_i , clinfo1=' delta_i :', mask1=tmask) + CALL prt_ctl(tab2d_1=u_ice , clinfo1=' u_ice :', mask1=umask, & + & tab2d_2=v_ice , clinfo2=' v_ice :', mask2=vmask) DO jl = 1, jpl CALL prt_ctl_info(' ') CALL prt_ctl_info(' - Category : ', ivar=jl) CALL prt_ctl_info(' ~~~~~~~~~~') - CALL prt_ctl(tab2d_1=h_i (:,:,jl) , clinfo1= ' h_i : ') - CALL prt_ctl(tab2d_1=h_s (:,:,jl) , clinfo1= ' h_s : ') - CALL prt_ctl(tab2d_1=t_su (:,:,jl) , clinfo1= ' t_su : ') - CALL prt_ctl(tab2d_1=t_s (:,:,1,jl) , clinfo1= ' t_snow : ') - CALL prt_ctl(tab2d_1=s_i (:,:,jl) , clinfo1= ' s_i : ') - CALL prt_ctl(tab2d_1=o_i (:,:,jl) , clinfo1= ' o_i : ') - CALL prt_ctl(tab2d_1=a_i (:,:,jl) , clinfo1= ' a_i : ') - CALL prt_ctl(tab2d_1=v_i (:,:,jl) , clinfo1= ' v_i : ') - CALL prt_ctl(tab2d_1=v_s (:,:,jl) , clinfo1= ' v_s : ') - CALL prt_ctl(tab2d_1=e_s (:,:,1,jl) , clinfo1= ' e_snow : ') - CALL prt_ctl(tab2d_1=sv_i (:,:,jl) , clinfo1= ' sv_i : ') - CALL prt_ctl(tab2d_1=oa_i (:,:,jl) , clinfo1= ' oa_i : ') + CALL prt_ctl(tab2d_1=h_i (:,:,jl) , clinfo1= ' h_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=h_s (:,:,jl) , clinfo1= ' h_s : ', mask1=tmask) + CALL prt_ctl(tab2d_1=t_su(:,:,jl) , clinfo1= ' t_su : ', mask1=tmask) + CALL prt_ctl(tab2d_1=t_s (:,:,1,jl), clinfo1= ' t_snow : ', mask1=tmask) + CALL prt_ctl(tab2d_1=s_i (:,:,jl) , clinfo1= ' s_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=o_i (:,:,jl) , clinfo1= ' o_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=a_i (:,:,jl) , clinfo1= ' a_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=v_i (:,:,jl) , clinfo1= ' v_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=v_s (:,:,jl) , clinfo1= ' v_s : ', mask1=tmask) + CALL prt_ctl(tab2d_1=e_s (:,:,1,jl), clinfo1= ' e_snow : ', mask1=tmask) + CALL prt_ctl(tab2d_1=sv_i(:,:,jl) , clinfo1= ' sv_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=oa_i(:,:,jl) , clinfo1= ' oa_i : ', mask1=tmask) DO jk = 1, nlay_i CALL prt_ctl_info(' - Layer : ', ivar=jk) - CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' t_i : ') - CALL prt_ctl(tab2d_1=e_i(:,:,jk,jl) , clinfo1= ' e_i : ') + CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' t_i : ', mask1=tmask) + CALL prt_ctl(tab2d_1=e_i(:,:,jk,jl) , clinfo1= ' e_i : ', mask1=tmask) END DO END DO CALL prt_ctl_info(' ') CALL prt_ctl_info(' - Stresses : ') CALL prt_ctl_info(' ~~~~~~~~~~ ') - CALL prt_ctl(tab2d_1=utau , clinfo1= ' utau : ', tab2d_2=vtau , clinfo2= ' vtau : ') - CALL prt_ctl(tab2d_1=utau_ice , clinfo1= ' utau_ice : ', tab2d_2=vtau_ice , clinfo2= ' vtau_ice : ') + CALL prt_ctl(tab2d_1=utau , clinfo1= ' utau : ', mask1 = umask, & + & tab2d_2=vtau , clinfo2= ' vtau : ', mask2 = vmask) + CALL prt_ctl(tab2d_1=utau_ice , clinfo1= ' utau_ice : ', mask1 = umask, & + & tab2d_2=vtau_ice , clinfo2= ' vtau_ice : ', mask2 = vmask) END SUBROUTINE ice_prt3D diff --git a/src/OCE/DYN/dynvor.F90 b/src/OCE/DYN/dynvor.F90 index 6d85a14aecf0c21ff39addf5990b471365140790..36f2d4b3fc6b8ed9ea570a7ba598a2234ed9785c 100644 --- a/src/OCE/DYN/dynvor.F90 +++ b/src/OCE/DYN/dynvor.F90 @@ -1017,7 +1017,7 @@ CONTAINS ! CASE DEFAULT !* F-point metric term : pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f) ALLOCATE( di_e2v_2e1e2f(jpi,jpj), dj_e1u_2e1e2f(jpi,jpj) ) - DO_2D( 1, 0, 1, 0 ) + DO_2D( 0, 0, 0, 0 ) di_e2v_2e1e2f(ji,jj) = ( e2v(ji+1,jj ) - e2v(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) dj_e1u_2e1e2f(ji,jj) = ( e1u(ji ,jj+1) - e1u(ji,jj) ) * 0.5 * r1_e1e2f(ji,jj) END_2D diff --git a/src/OCE/LBC/lbc_lnk_pt2pt_generic.h90 b/src/OCE/LBC/lbc_lnk_pt2pt_generic.h90 index 8d336f7d2b613768f35af2fe6a416f6dadf745fc..395a3e93c037cf53ac82eb911726c24926168d3b 100644 --- a/src/OCE/LBC/lbc_lnk_pt2pt_generic.h90 +++ b/src/OCE/LBC/lbc_lnk_pt2pt_generic.h90 @@ -120,7 +120,7 @@ ! ! ip0i ip1i im1i im0i ! iwewe(:) = (/ jpwe,jpea,jpwe,jpea /) ; issnn(:) = (/ jpso,jpso,jpno,jpno /) - !cd sides: west east south north ; corners: so-we, so-ea, no-we, no-ea + ! sides: west east south north ; corners: so-we, so-ea, no-we, no-ea isizei(1:4) = (/ ihls, ihls, ipi, ipi /) ; isizei(5:8) = ihls ! i- count isizej(1:4) = (/ Nj_0, Nj_0, ihls, ihls /) ; isizej(5:8) = ihls ! j- count ishtSi(1:4) = (/ ip1i, im1i, ip0i, ip0i /) ; ishtSi(5:8) = ishtSi( iwewe ) ! i- shift send data diff --git a/src/OCE/LBC/mppini.F90 b/src/OCE/LBC/mppini.F90 index 31efed848812f6ebef740445d854d863cee24273..22bc6beb51123c49b730b0b52e0eb8fab42cc6e0 100644 --- a/src/OCE/LBC/mppini.F90 +++ b/src/OCE/LBC/mppini.F90 @@ -175,6 +175,7 @@ CONTAINS ENDIF WRITE(numout,*) ' avoid use of mpi_allgather at the north fold ln_nnogather = ', ln_nnogather WRITE(numout,*) ' halo width (applies to both rows and columns) nn_hls = ', nn_hls + WRITE(numout,*) ' choice of communication method nn_comm = ', nn_comm ENDIF ! IF(lwm) WRITE( numond, nammpp ) @@ -1152,11 +1153,11 @@ CONTAINS !! !!---------------------------------------------------------------------- INTEGER :: inumsave - INTEGER :: jh + INTEGER :: ji,jj,jh INTEGER :: ipi, ipj INTEGER :: iiwe, iiea, iist, iisz INTEGER :: ijso, ijno, ijst, ijsz - REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zmsk + REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zmsk0, zmsk LOGICAL , DIMENSION(Ni_0,Nj_0,1) :: lloce !!---------------------------------------------------------------------- ! @@ -1175,13 +1176,21 @@ CONTAINS ipi = Ni_0 + 2*jh ! local domain size ipj = Nj_0 + 2*jh ! - ALLOCATE( zmsk(ipi,ipj) ) - zmsk(jh+1:jh+Ni_0,jh+1:jh+Nj_0) = REAL(COUNT(lloce, dim = 3), wp) ! define inner domain -> need REAL to use lbclnk - CALL lbc_lnk('mppini', zmsk, 'T', 1._wp, khls = jh) ! fill halos - ! Beware, coastal F points can be used in the code -> we may need communications for these points F points even if tmask = 0 - ! -> the mask we must use here is equal to 1 as soon as one of the 4 neighbours is oce (sum of the mask, not multiplication) - zmsk(jh+1:jh+Ni_0,jh+1:jh+Nj_0) = zmsk(jh+1:jh+Ni_0,jh+1 :jh+Nj_0 ) + zmsk(jh+1+1:jh+Ni_0+1,jh+1 :jh+Nj_0 ) & - & + zmsk(jh+1:jh+Ni_0,jh+1+1:jh+Nj_0+1) + zmsk(jh+1+1:jh+Ni_0+1,jh+1+1:jh+Nj_0+1) + ALLOCATE( zmsk0(ipi,ipj), zmsk(ipi,ipj) ) + zmsk0(jh+1:jh+Ni_0,jh+1:jh+Nj_0) = REAL(COUNT(lloce, dim = 3), wp) ! define inner domain -> need REAL to use lbclnk + CALL lbc_lnk('mppini', zmsk0, 'T', 1._wp, khls = jh) ! fill halos + ! Beware about the mask we must use here : + DO jj = jh+1, jh+Nj_0 + DO ji = jh+1, jh+Ni_0 + zmsk(ji,jj) = zmsk0(ji,jj) & + ! 1) dynvor may use scale factors on i+1 (e2v for di_e2v_2e1e2f) and j+1 (e1u for dj_e1u_2e1e2f) even if land + ! -> the mask must be > 1 if south/west neighbours is oce as we may need to send these arrays to these neighbours + & + zmsk0(ji-1,jj) + zmsk0(ji,jj-1) & + ! 2) coastal F points can be used, so we may need communications for these points F points even IF tmask = 0 + ! -> the mask must be > 1 as soon as one of the 3 neighbours is oce: (i,j+1) (i+1,j) (i+1,j+1) + & + zmsk0(ji+1,jj) + zmsk0(ji,jj+1) + zmsk0(ji+1,jj+1) + END DO + END DO CALL lbc_lnk('mppini', zmsk, 'T', 1._wp, khls = jh) ! fill halos again! ! iiwe = jh ; iiea = Ni_0 ! bottom-left corner - 1 of the sent data @@ -1206,7 +1215,7 @@ IF( nn_comm == 1 ) THEN ! SM: NOT WORKING FOR NEIGHBOURHOOD COLLECTIVE COM ! iiwe = iiwe-jh ; iiea = iiea+jh ! bottom-left corner - 1 of the received data ijso = ijso-jh ; ijno = ijno+jh - ! do not send if we send only land points + ! do not recv if we recv only land points IF( NINT(SUM( zmsk(iiwe+1:iiwe+jh ,ijst+1:ijst+ijsz) )) == 0 ) mpiRnei(jh,jpwe) = -1 IF( NINT(SUM( zmsk(iiea+1:iiea+jh ,ijst+1:ijst+ijsz) )) == 0 ) mpiRnei(jh,jpea) = -1 IF( NINT(SUM( zmsk(iist+1:iist+iisz,ijso+1:ijso+jh ) )) == 0 ) mpiRnei(jh,jpso) = -1 @@ -1225,7 +1234,7 @@ ENDIF IF( mpiRnei(jh,jpno) > -1 ) mpiRnei(jh, (/jpnw,jpne/) ) = -1 ! NW and NE corners will be received through North nei ENDIF ! - DEALLOCATE( zmsk ) + DEALLOCATE( zmsk0, zmsk ) ! CALL mpp_ini_nc(jh) ! Initialize/Update communicator for neighbourhood collective communications ! diff --git a/src/OCE/SBC/sbcblk.F90 b/src/OCE/SBC/sbcblk.F90 index 3322532d6ec9030a365ae853b5b11c899060e664..fb85cba25ce800edfb665c6a5e08f586ed38a797 100644 --- a/src/OCE/SBC/sbcblk.F90 +++ b/src/OCE/SBC/sbcblk.F90 @@ -868,11 +868,11 @@ CONTAINS CALL iom_put( "vtau_oce", ztau_j(:,:)*tmask(:,:,1) ) ! vtau at T-points! IF(sn_cfctl%l_prtctl) THEN - CALL prt_ctl( tab2d_1=pssq , clinfo1=' blk_oce_1: pssq : ') - CALL prt_ctl( tab2d_1=wndm , clinfo1=' blk_oce_1: wndm : ') + CALL prt_ctl( tab2d_1=pssq , clinfo1=' blk_oce_1: pssq : ', mask1=tmask ) + CALL prt_ctl( tab2d_1=wndm , clinfo1=' blk_oce_1: wndm : ', mask1=tmask ) CALL prt_ctl( tab2d_1=utau , clinfo1=' blk_oce_1: utau : ', mask1=umask, & & tab2d_2=vtau , clinfo2=' vtau : ', mask2=vmask ) - CALL prt_ctl( tab2d_1=zcd_oce, clinfo1=' blk_oce_1: Cd : ') + CALL prt_ctl( tab2d_1=zcd_oce, clinfo1=' blk_oce_1: Cd : ', mask1=tmask ) ENDIF ! ENDIF ! ln_blk / ln_abl @@ -945,8 +945,10 @@ CONTAINS qns(:,:) = qns(:,:) * tmask(:,:,1) ! #if defined key_si3 - qns_oce(:,:) = zqlw(:,:) + psen(:,:) + plat(:,:) ! non solar without emp (only needed by SI3) - qsr_oce(:,:) = qsr(:,:) + IF ( nn_ice == 2 ) THEN + qns_oce(:,:) = zqlw(:,:) + psen(:,:) + plat(:,:) ! non solar without emp (only needed by SI3) + qsr_oce(:,:) = qsr(:,:) + ENDIF #endif ! CALL iom_put( "rho_air" , rhoa*tmask(:,:,1) ) ! output air density [kg/m^3] @@ -967,11 +969,11 @@ CONTAINS ENDIF ! IF(sn_cfctl%l_prtctl) THEN - CALL prt_ctl(tab2d_1=zqlw , clinfo1=' blk_oce_2: zqlw : ') - CALL prt_ctl(tab2d_1=psen , clinfo1=' blk_oce_2: psen : ' ) - CALL prt_ctl(tab2d_1=plat , clinfo1=' blk_oce_2: plat : ' ) - CALL prt_ctl(tab2d_1=qns , clinfo1=' blk_oce_2: qns : ' ) - CALL prt_ctl(tab2d_1=emp , clinfo1=' blk_oce_2: emp : ') + CALL prt_ctl(tab2d_1=zqlw , clinfo1=' blk_oce_2: zqlw : ', mask1=tmask ) + CALL prt_ctl(tab2d_1=psen , clinfo1=' blk_oce_2: psen : ', mask1=tmask ) + CALL prt_ctl(tab2d_1=plat , clinfo1=' blk_oce_2: plat : ', mask1=tmask ) + CALL prt_ctl(tab2d_1=qns , clinfo1=' blk_oce_2: qns : ', mask1=tmask ) + CALL prt_ctl(tab2d_1=emp , clinfo1=' blk_oce_2: emp : ', mask1=tmask ) ENDIF ! END SUBROUTINE blk_oce_2 @@ -1094,8 +1096,8 @@ CONTAINS END_2D CALL lbc_lnk( 'sbcblk', putaui, 'U', -1._wp, pvtaui, 'V', -1._wp ) ! - IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=putaui , clinfo1=' blk_ice: putaui : ' & - & , tab2d_2=pvtaui , clinfo2=' pvtaui : ' ) + IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=putaui , clinfo1=' blk_ice: putaui : ', mask1=umask & + & , tab2d_2=pvtaui , clinfo2=' pvtaui : ', mask2=vmask ) ELSE ! ln_abl DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) @@ -1107,7 +1109,7 @@ CONTAINS ENDIF ! ln_blk / ln_abl ! - IF(sn_cfctl%l_prtctl) CALL prt_ctl(tab2d_1=wndm_ice , clinfo1=' blk_ice: wndm_ice : ') + IF(sn_cfctl%l_prtctl) CALL prt_ctl(tab2d_1=wndm_ice , clinfo1=' blk_ice: wndm_ice : ', mask1=tmask ) ! END SUBROUTINE blk_ice_1 @@ -1139,6 +1141,7 @@ CONTAINS REAL(wp) :: zst, zst3, zsq, zsipt ! local variable REAL(wp) :: zcoef_dqlw, zcoef_dqla ! - - REAL(wp) :: zztmp, zzblk, zztmp1, z1_rLsub ! - - + REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zmsk ! temporary mask for prt_ctl REAL(wp), DIMENSION(jpi,jpj,jpl) :: z_qlw ! long wave heat flux over ice REAL(wp), DIMENSION(jpi,jpj,jpl) :: z_qsb ! sensible heat flux over ice REAL(wp), DIMENSION(jpi,jpj,jpl) :: z_dqlw ! long wave heat sensitivity over ice @@ -1303,12 +1306,23 @@ CONTAINS ENDIF ! IF(sn_cfctl%l_prtctl) THEN - CALL prt_ctl(tab3d_1=qla_ice , clinfo1=' blk_ice: qla_ice : ', tab3d_2=z_qsb , clinfo2=' z_qsb : ', kdim=jpl) - CALL prt_ctl(tab3d_1=z_qlw , clinfo1=' blk_ice: z_qlw : ', tab3d_2=dqla_ice, clinfo2=' dqla_ice : ', kdim=jpl) - CALL prt_ctl(tab3d_1=z_dqsb , clinfo1=' blk_ice: z_dqsb : ', tab3d_2=z_dqlw , clinfo2=' z_dqlw : ', kdim=jpl) - CALL prt_ctl(tab3d_1=dqns_ice, clinfo1=' blk_ice: dqns_ice : ', tab3d_2=qsr_ice , clinfo2=' qsr_ice : ', kdim=jpl) - CALL prt_ctl(tab3d_1=ptsu , clinfo1=' blk_ice: ptsu : ', tab3d_2=qns_ice , clinfo2=' qns_ice : ', kdim=jpl) - CALL prt_ctl(tab2d_1=tprecip , clinfo1=' blk_ice: tprecip : ', tab2d_2=sprecip , clinfo2=' sprecip : ') + ALLOCATE(zmsk(jpi,jpj,jpl)) + DO jl = 1, jpl + zmsk(:,:,jpl) = tmask(:,:,1) + END DO + CALL prt_ctl(tab3d_1=qla_ice , clinfo1=' blk_ice: qla_ice : ', mask1=zmsk, & + & tab3d_2=z_qsb , clinfo2=' z_qsb : ' , mask2=zmsk, kdim=jpl) + CALL prt_ctl(tab3d_1=z_qlw , clinfo1=' blk_ice: z_qlw : ', mask1=zmsk, & + & tab3d_2=dqla_ice, clinfo2=' dqla_ice : ' , mask2=zmsk, kdim=jpl) + CALL prt_ctl(tab3d_1=z_dqsb , clinfo1=' blk_ice: z_dqsb : ', mask1=zmsk, & + & tab3d_2=z_dqlw , clinfo2=' z_dqlw : ' , mask2=zmsk, kdim=jpl) + CALL prt_ctl(tab3d_1=dqns_ice, clinfo1=' blk_ice: dqns_ice : ', mask1=zmsk, & + & tab3d_2=qsr_ice , clinfo2=' qsr_ice : ' , mask2=zmsk, kdim=jpl) + CALL prt_ctl(tab3d_1=ptsu , clinfo1=' blk_ice: ptsu : ', mask1=zmsk, & + & tab3d_2=qns_ice , clinfo2=' qns_ice : ' , mask2=zmsk, kdim=jpl) + CALL prt_ctl(tab2d_1=tprecip , clinfo1=' blk_ice: tprecip : ', mask1=tmask, & + & tab2d_2=sprecip , clinfo2=' sprecip : ' , mask2=tmask ) + DEALLOCATE(zmsk) ENDIF !#LB: diff --git a/src/OCE/SBC/sbcfwb.F90 b/src/OCE/SBC/sbcfwb.F90 index cc5ca7b32f4a2d0ee887b954e8d9d2978f5af4be..58a17f028f4a7cc404859b8c7c4a66f98cd04406 100644 --- a/src/OCE/SBC/sbcfwb.F90 +++ b/src/OCE/SBC/sbcfwb.F90 @@ -104,11 +104,11 @@ CONTAINS ! isf cavities are excluded because it can feedback to the melting with generation of inhibition of plumes ! and in case of no melt, it can generate HSSW. ! -#if ! defined key_si3 && ! defined key_cice - snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass - snwice_mass (:,:) = 0.e0 - snwice_fmass (:,:) = 0.e0 -#endif + IF( nn_ice == 0 ) THEN + snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass + snwice_mass (:,:) = 0.e0 + snwice_fmass (:,:) = 0.e0 + ENDIF ! ENDIF diff --git a/src/OCE/SBC/sbcmod.F90 b/src/OCE/SBC/sbcmod.F90 index 86ec97aa162262e15022d46b070d7ea933179bd1..34764262decdcaa7680b6b9ec654d154a63caaeb 100644 --- a/src/OCE/SBC/sbcmod.F90 +++ b/src/OCE/SBC/sbcmod.F90 @@ -327,10 +327,10 @@ CONTAINS ! #if defined key_si3 IF( nn_ice == 0 ) THEN -#if defined key_agrif ! allocate ice arrays in case agrif + ice-model + no-ice in child grid jpl = 1 ; nlay_i = 1 ; nlay_s = 1 IF( sbc_ice_alloc() /= 0 ) CALL ctl_stop('STOP', 'sbc_ice_alloc : unable to allocate arrays' ) +#if defined key_agrif CALL Agrif_Declare_Var_ice ! " " " " " Sea ice #endif