Changeset 5146
- Timestamp:
- 2015-03-11T18:30:22+01:00 (8 years ago)
- Location:
- trunk/NEMOGCM
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref
r5129 r5146 94 94 ! 3: activate G(he) only --- temporary option 95 95 ! 4: activate lateral melting only --- temporary option 96 ln_it_qnsice = .true. ! iterate the surface non-solar flux with surface temperature (T) or not (F) 96 97 / 97 98 !------------------------------------------------------------------------------ -
trunk/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r5128 r5146 198 198 INTEGER , PUBLIC :: nn_ice_thcon !: thermal conductivity: =0 Untersteiner (1964) ; =1 Pringle et al (2007) 199 199 INTEGER , PUBLIC :: nn_monocat !: virtual ITD mono-category parameterizations (1) or not (0) 200 LOGICAL , PUBLIC :: ln_it_qnsice !: iterate surface flux with changing surface temperature or not (F) 200 201 201 202 ! !!** ice-mechanical redistribution namelist (namiceitdme) … … 285 286 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_snw !: heat flux for snow melt 286 287 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_err !: heat flux error after heat diffusion 288 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_err_dif !: heat flux remaining due to change in non-solar flux 287 289 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_err_rem !: heat flux error after heat remapping 288 290 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hfx_in !: heat flux available for thermo transformations … … 433 435 & sfx_res(jpi,jpj) , sfx_bri(jpi,jpj) , sfx_dyn(jpi,jpj) , & 434 436 & sfx_bog(jpi,jpj) , sfx_bom(jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) , & 435 & hfx_res(jpi,jpj) , hfx_snw(jpi,jpj) , hfx_sub(jpi,jpj) , hfx_err(jpi,jpj) , hfx_err_rem(jpi,jpj), & 437 & hfx_res(jpi,jpj) , hfx_snw(jpi,jpj) , hfx_sub(jpi,jpj) , hfx_err(jpi,jpj) , & 438 & hfx_err_dif(jpi,jpj) , hfx_err_rem(jpi,jpj) , & 436 439 & hfx_in (jpi,jpj) , hfx_out(jpi,jpj) , fhld(jpi,jpj) , & 437 440 & hfx_sum(jpi,jpj) , hfx_bom(jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) , hfx_opw(jpi,jpj) , & -
trunk/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r5128 r5146 146 146 hfx_out(ji,jj) = hfx_out(ji,jj) + zf_mass + zfcm1 147 147 148 ! Add the residual from heat diffusion equation (W.m-2) 149 !------------------------------------------------------- 150 hfx_out(ji,jj) = hfx_out(ji,jj) + hfx_err_dif(ji,jj) 151 148 152 ! New qsr and qns used to compute the oceanic heat flux at the next time step 149 153 !--------------------------------------------------- … … 164 168 ! computing freshwater exchanges at the ice/ocean interface 165 169 IF( lk_cpl ) THEN 166 zemp = - emp_tot(ji,jj) + emp_ice(ji,jj) * ( 1. - pfrld(ji,jj) ) & ! 167 & + wfx_snw(ji,jj) 170 zemp = emp_tot(ji,jj) & ! net mass flux over grid cell 171 & - emp_ice(ji,jj) * ( 1._wp - pfrld(ji,jj) ) & ! minus the mass flux intercepted by sea ice 172 & + sprecip(ji,jj) * ( pfrld(ji,jj) - pfrld(ji,jj)**rn_betas ) ! 168 173 ELSE 169 174 zemp = emp(ji,jj) * pfrld(ji,jj) & ! evaporation over oceanic fraction -
trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r5134 r5146 601 601 CALL tab_2d_1d( nbpb, hfx_err_1d (1:nbpb), hfx_err , jpi, jpj, npb(1:nbpb) ) 602 602 CALL tab_2d_1d( nbpb, hfx_res_1d (1:nbpb), hfx_res , jpi, jpj, npb(1:nbpb) ) 603 CALL tab_2d_1d( nbpb, hfx_err_dif_1d (1:nbpb), hfx_err_dif , jpi, jpj, npb(1:nbpb) ) 603 604 CALL tab_2d_1d( nbpb, hfx_err_rem_1d (1:nbpb), hfx_err_rem , jpi, jpj, npb(1:nbpb) ) 604 605 … … 651 652 CALL tab_1d_2d( nbpb, hfx_res , npb, hfx_res_1d(1:nbpb) , jpi, jpj ) 652 653 CALL tab_1d_2d( nbpb, hfx_err_rem , npb, hfx_err_rem_1d(1:nbpb), jpi, jpj ) 654 CALL tab_1d_2d( nbpb, hfx_err_dif , npb, hfx_err_dif_1d(1:nbpb), jpi, jpj ) 653 655 ! 654 656 CALL tab_1d_2d( nbpb, qns_ice(:,:,jl), npb, qns_ice_1d(1:nbpb) , jpi, jpj) … … 675 677 NAMELIST/namicethd/ rn_hnewice, ln_frazil, rn_maxfrazb, rn_vfrazb, rn_Cfrazb, & 676 678 & rn_himin, parsub, rn_betas, rn_kappa_i, nn_conv_dif, rn_terr_dif, nn_ice_thcon, & 677 & nn_monocat 679 & nn_monocat, ln_it_qnsice 678 680 !!------------------------------------------------------------------- 679 681 ! … … 718 720 WRITE(numout,*)' check heat conservation in the ice/snow con_i = ', con_i 719 721 WRITE(numout,*)' virtual ITD mono-category parameterizations (1) or not nn_monocat = ', nn_monocat 722 WRITE(numout,*)' iterate the surface non-solar flux (T) or not (F) ln_it_qnsice = ', ln_it_qnsice 720 723 ENDIF 721 724 ! -
trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
r5128 r5146 120 120 REAL(wp), POINTER, DIMENSION(:) :: zh_s ! snow layer thickness 121 121 REAL(wp), POINTER, DIMENSION(:) :: zfsw ! solar radiation absorbed at the surface 122 REAL(wp), POINTER, DIMENSION(:) :: zqns_ice_b ! solar radiation absorbed at the surface 122 123 REAL(wp), POINTER, DIMENSION(:) :: zf ! surface flux function 123 124 REAL(wp), POINTER, DIMENSION(:) :: dzf ! derivative of the surface flux function … … 168 169 CALL wrk_alloc( jpij, numeqmin, numeqmax ) 169 170 CALL wrk_alloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw ) 170 CALL wrk_alloc( jpij, zf, dzf, z errit, zdifcase, zftrice, zihic, zghe )171 CALL wrk_alloc( jpij, zf, dzf, zqns_ice_b, zerrit, zdifcase, zftrice, zihic, zghe ) 171 172 CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 172 173 CALL wrk_alloc( jpij, nlay_s+1, zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0) … … 242 243 !------------------------------------------------------- 243 244 DO ji = kideb , kiut 244 zfsw (ji) = qsr_ice_1d(ji) * ( 1 - i0(ji) ) ! Shortwave radiation absorbed at surface 245 zftrice(ji) = qsr_ice_1d(ji) * i0(ji) ! Solar radiation transmitted below the surface layer 246 dzf (ji) = dqns_ice_1d(ji) ! derivative of incoming nonsolar flux 245 zfsw (ji) = qsr_ice_1d(ji) * ( 1 - i0(ji) ) ! Shortwave radiation absorbed at surface 246 zftrice(ji) = qsr_ice_1d(ji) * i0(ji) ! Solar radiation transmitted below the surface layer 247 dzf (ji) = dqns_ice_1d(ji) ! derivative of incoming nonsolar flux 248 zqns_ice_b(ji) = qns_ice_1d(ji) ! store previous qns_ice_1d value 247 249 END DO 248 250 … … 452 454 !------------------------------------------------------------------------------| 453 455 ! 454 IF ( .NOT. lk_cpl ) THEN !--- forced atmosphere case456 IF ( ln_it_qnsice ) THEN 455 457 DO ji = kideb , kiut 456 458 ! update of the non solar flux according to the update in T_su … … 757 759 CALL lim_thd_enmelt( kideb, kiut ) 758 760 761 ! --- diagnose the change in non-solar flux due to surface temperature change --- ! 762 IF ( ln_it_qnsice ) hfx_err_dif_1d(:) = hfx_err_dif_1d(:) - ( qns_ice_1d(:) - zqns_ice_b(:) ) * a_i_1d(:) 759 763 760 764 ! --- diag conservation imbalance on heat diffusion - PART 2 --- ! … … 770 774 END DO 771 775 772 ! diagnose external surface (forced case) or bottom (forced case) from heat conservation 773 IF( .NOT. lk_cpl ) THEN ! --- forced case: qns_ice and fc_su are diagnosed 774 ! 775 DO ji = kideb, kiut 776 qns_ice_1d(ji) = qns_ice_1d(ji) - zhfx_err(ji) 777 fc_su (ji) = fc_su(ji) - zhfx_err(ji) 778 END DO 779 ! 780 ELSE ! --- coupled case: ocean turbulent heat flux is diagnosed 781 ! 782 DO ji = kideb, kiut 783 fhtur_1d (ji) = fhtur_1d(ji) - zhfx_err(ji) 784 END DO 785 ! 786 ENDIF 776 hfx_err_dif_1d(:) = hfx_err_dif_1d(:) - zhfx_err(:) * a_i_1d(:) 787 777 788 778 !----------------------------------------- -
trunk/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90
r5123 r5146 55 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_err_1d 56 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_err_rem_1d 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: hfx_err_dif_1d 57 58 58 59 ! heat flux associated with ice-atmosphere mass exchange … … 144 145 & qsr_ice_1d (jpij) , & 145 146 & fr1_i0_1d(jpij) , fr2_i0_1d(jpij) , qns_ice_1d(jpij) , & 146 & t_bo_1d (jpij) , 147 & hfx_sum_1d(jpij) , hfx_bom_1d(jpij) ,hfx_bog_1d(jpij) , 148 & hfx_dif_1d(jpij) , hfx_opw_1d(jpij) ,&149 & hfx_thd_1d(jpij) , hfx_spr_1d(jpij) , &150 & hfx_snw_1d(jpij) , hfx_sub_1d(jpij) , hfx_err_1d(jpij) , &151 & hfx_res_1d(jpij) , hfx_err_rem_1d(jpij) ,STAT=ierr(1) )147 & t_bo_1d (jpij) , & 148 & hfx_sum_1d(jpij) , hfx_bom_1d(jpij) ,hfx_bog_1d(jpij) , & 149 & hfx_dif_1d(jpij) , hfx_opw_1d(jpij) , & 150 & hfx_thd_1d(jpij) , hfx_spr_1d(jpij) , & 151 & hfx_snw_1d(jpij) , hfx_sub_1d(jpij) , hfx_err_1d(jpij) , & 152 & hfx_res_1d(jpij) , hfx_err_rem_1d(jpij) , hfx_err_dif_1d(jpij) , STAT=ierr(1) ) 152 153 ! 153 154 ALLOCATE( sprecip_1d (jpij) , frld_1d (jpij) , at_i_1d (jpij) , & -
trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r5123 r5146 1199 1199 ENDDO 1200 1200 ELSE 1201 qns_tot(:,: ) = qns_tot(:,:) + zicefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1) 1201 1202 DO jl=1,jpl 1202 qns_tot(:,: ) = qns_tot(:,:) + zicefr(:,:) * frcv(jpr_qnsice)%z3(:,:,1)1203 1203 qns_ice(:,:,jl) = frcv(jpr_qnsice)%z3(:,:,1) 1204 1204 ENDDO … … 1258 1258 ENDDO 1259 1259 ELSE 1260 qsr_tot(:,: ) = qsr_tot(:,:) + zicefr(:,:) * frcv(jpr_qsrice)%z3(:,:,1) 1260 1261 DO jl=1,jpl 1261 qsr_tot(:,: ) = qsr_tot(:,:) + zicefr(:,:) * frcv(jpr_qsrice)%z3(:,:,1)1262 1262 qsr_ice(:,:,jl) = frcv(jpr_qsrice)%z3(:,:,1) 1263 1263 ENDDO -
trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r5128 r5146 602 602 hfx_spr(:,:) = 0._wp ; hfx_dif(:,:) = 0._wp 603 603 hfx_err(:,:) = 0._wp ; hfx_err_rem(:,:) = 0._wp 604 hfx_err_dif(:,:) = 0._wp 604 605 605 606 afx_tot(:,:) = 0._wp ;
Note: See TracChangeset
for help on using the changeset viewer.