Changeset 10011
- Timestamp:
- 2018-07-30T12:03:24+02:00 (6 years ago)
- Location:
- NEMO/branches/UKMO/NEMO4_beta_mirror
- Files:
-
- 12 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO4_beta_mirror/cfgs/ORCA2_ICE_PISCES/EXPREF/file_def_nemo-oce.xml
r9572 r10011 37 37 <field field_ref="wspd" name="windsp" /> 38 38 <field field_ref="precip" name="precip" /> 39 <field field_ref="berg_melt_qlat" name="berg_melt_qlat" /> 39 40 <!-- ice and snow --> 40 41 <field field_ref="snowpre" /> -
NEMO/branches/UKMO/NEMO4_beta_mirror/cfgs/SHARED/field_def_nemo-oce.xml
r9934 r10011 531 531 <field_group id="icbvar" domain_ref="grid_T" > 532 532 <field id="berg_melt" long_name="icb melt rate of icebergs" unit="kg/m2/s" /> 533 <field id="berg_melt_hcflx" long_name="icb heat flux to ocean due to melting heat content" unit="J/m2/s" /> 534 <field id="berg_melt_qlat" long_name="icb heat flux to ocean due to melting latent heat" unit="J/m2/s" /> 533 535 <field id="berg_buoy_melt" long_name="icb buoyancy component of iceberg melt rate" unit="kg/m2/s" /> 534 536 <field id="berg_eros_melt" long_name="icb erosion component of iceberg melt rate" unit="kg/m2/s" /> -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/ICE/icealb.F90
r9950 r10011 110 110 IF( ln_timing ) CALL timing_start('icealb') 111 111 ! 112 z1_href_pnd = 0.05112 z1_href_pnd = 1. / 0.05 113 113 z1_c1 = 1. / ( LOG(1.5) - LOG(0.05) ) 114 114 z1_c2 = 1. / 0.05 -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/OCE/DYN/dynzad.F90
r9950 r10011 89 89 ! 90 90 ! Surface and bottom advective fluxes set to zero 91 IF( ln_isfcav ) THEN 92 DO jj = 2, jpjm1 93 DO ji = fs_2, fs_jpim1 ! vector opt. 94 zwuw(ji,jj, 1:miku(ji,jj) ) = 0._wp 95 zwvw(ji,jj, 1:mikv(ji,jj) ) = 0._wp 96 zwuw(ji,jj,jpk) = 0._wp 97 zwvw(ji,jj,jpk) = 0._wp 98 END DO 99 END DO 100 ELSE 101 DO jj = 2, jpjm1 102 DO ji = fs_2, fs_jpim1 ! vector opt. 103 zwuw(ji,jj, 1 ) = 0._wp 104 zwvw(ji,jj, 1 ) = 0._wp 105 zwuw(ji,jj,jpk) = 0._wp 106 zwvw(ji,jj,jpk) = 0._wp 107 END DO 108 END DO 109 END IF 110 91 DO jj = 2, jpjm1 92 DO ji = fs_2, fs_jpim1 ! vector opt. 93 zwuw(ji,jj, 1 ) = 0._wp 94 zwvw(ji,jj, 1 ) = 0._wp 95 zwuw(ji,jj,jpk) = 0._wp 96 zwvw(ji,jj,jpk) = 0._wp 97 END DO 98 END DO 99 ! 111 100 DO jk = 1, jpkm1 ! Vertical momentum advection at u- and v-points 112 101 DO jj = 2, jpjm1 -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/OCE/ICB/icbdia.F90
r9950 r10011 51 51 52 52 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: berg_melt ! Melting+erosion rate of icebergs [kg/s/m2] 53 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: berg_melt_hcflx ! Heat flux to ocean due to heat content of melting icebergs [J/s/m2] 54 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: berg_melt_qlat ! Heat flux to ocean due to latent heat of melting icebergs [J/s/m2] 53 55 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: buoy_melt ! Buoyancy component of melting rate [kg/s/m2] 54 56 REAL(wp), DIMENSION(:,:) , ALLOCATABLE, PUBLIC :: eros_melt ! Erosion component of melting rate [kg/s/m2] … … 101 103 102 104 ALLOCATE( berg_melt (jpi,jpj) ) ; berg_melt (:,:) = 0._wp 105 ALLOCATE( berg_melt_hcflx(jpi,jpj) ) ; berg_melt_hcflx(:,:) = 0._wp 106 ALLOCATE( berg_melt_qlat(jpi,jpj) ) ; berg_melt_qlat(:,:) = 0._wp 103 107 ALLOCATE( buoy_melt (jpi,jpj) ) ; buoy_melt (:,:) = 0._wp 104 108 ALLOCATE( eros_melt (jpi,jpj) ) ; eros_melt (:,:) = 0._wp … … 364 368 IF( .NOT.ln_bergdia ) RETURN 365 369 berg_melt (:,:) = 0._wp 370 berg_melt_hcflx(:,:) = 0._wp 371 berg_melt_qlat(:,:) = 0._wp 366 372 buoy_melt (:,:) = 0._wp 367 373 eros_melt (:,:) = 0._wp … … 384 390 ! 385 391 CALL iom_put( "berg_melt" , berg_melt (:,:) ) ! Melt rate of icebergs [kg/m2/s] 392 !! NB. The berg_melt_hcflx field is currently always zero - see comment in icbthm.F90 393 CALL iom_put( "berg_melt_hcflx" , berg_melt_hcflx(:,:)) ! Heat flux to ocean due to heat content of melting icebergs [J/m2/s] 394 CALL iom_put( "berg_melt_qlat" , berg_melt_qlat(:,:) ) ! Heat flux to ocean due to latent heat of melting icebergs [J/m2/s] 386 395 CALL iom_put( "berg_buoy_melt" , buoy_melt (:,:) ) ! Buoyancy component of iceberg melt rate [kg/m2/s] 387 396 CALL iom_put( "berg_eros_melt" , eros_melt (:,:) ) ! Erosion component of iceberg melt rate [kg/m2/s] … … 471 480 472 481 473 SUBROUTINE icb_dia_melt(ki, kj, pmnew, pheat , pmass_scale, &482 SUBROUTINE icb_dia_melt(ki, kj, pmnew, pheat_hcflux, pheat_latent, pmass_scale, & 474 483 & pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, & 475 484 & pdMv, pz1_dt_e1e2 ) … … 477 486 !!---------------------------------------------------------------------- 478 487 INTEGER , INTENT(in) :: ki, kj 479 REAL(wp), INTENT(in) :: pmnew, pheat , pmass_scale488 REAL(wp), INTENT(in) :: pmnew, pheat_hcflux, pheat_latent, pmass_scale 480 489 REAL(wp), INTENT(in) :: pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, pdMv, pz1_dt_e1e2 481 490 !!---------------------------------------------------------------------- … … 484 493 ! 485 494 berg_melt (ki,kj) = berg_melt (ki,kj) + pdM * pz1_dt_e1e2 ! kg/m2/s 495 berg_melt_hcflx (ki,kj) = berg_melt_hcflx (ki,kj) + pheat_hcflux * pz1_dt_e1e2 ! J/m2/s 496 berg_melt_qlat (ki,kj) = berg_melt_qlat (ki,kj) + pheat_latent * pz1_dt_e1e2 ! J/m2/s 486 497 bits_src (ki,kj) = bits_src (ki,kj) + pdMbitsE * pz1_dt_e1e2 ! mass flux into bergy bitskg/m2/s 487 498 bits_melt (ki,kj) = bits_melt (ki,kj) + pdMbitsM * pz1_dt_e1e2 ! melt rate of bergy bits kg/m2/s … … 489 500 eros_melt (ki,kj) = eros_melt (ki,kj) + pdMe * pz1_dt_e1e2 ! erosion rate kg/m2/s 490 501 conv_melt (ki,kj) = conv_melt (ki,kj) + pdMv * pz1_dt_e1e2 ! kg/m2/s 491 heat_to_ocean_net = heat_to_ocean_net + pheat* pmass_scale * berg_dt ! J502 heat_to_ocean_net = heat_to_ocean_net + (pheat_hcflux + pheat_latent) * pmass_scale * berg_dt ! J 492 503 IF( pmnew <= 0._wp ) nbergs_melted = nbergs_melted + 1 ! Delete the berg if completely melted 493 504 ! -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/OCE/ICB/icbthm.F90
r9950 r10011 50 50 REAL(wp) :: zM, zT, zW, zL, zSST, zVol, zLn, zWn, zTn, znVol, zIC, zDn 51 51 REAL(wp) :: zMv, zMe, zMb, zmelt, zdvo, zdva, zdM, zSs, zdMe, zdMb, zdMv 52 REAL(wp) :: zMnew, zMnew1, zMnew2, zheat , z1_1252 REAL(wp) :: zMnew, zMnew1, zMnew2, zheat_hcflux, zheat_latent, z1_12 53 53 REAL(wp) :: zMbits, znMbits, zdMbitsE, zdMbitsM, zLbits, zAbits, zMbb 54 54 REAL(wp) :: zxi, zyj, zff, z1_rday, z1_e1e2, zdt, z1_dt, z1_dt_e1e2 … … 68 68 ! 69 69 berg_grid%floating_melt(:,:) = 0._wp 70 ! calving_hflx re-used here as temporary workspace for the heat flux associated with melting 70 71 berg_grid%calving_hflx(:,:) = 0._wp 71 72 ! … … 166 167 zmelt = ( zdM - ( zdMbitsE - zdMbitsM ) ) * z1_dt ! kg/s 167 168 berg_grid%floating_melt(ii,ij) = berg_grid%floating_melt(ii,ij) + zmelt * z1_e1e2 ! kg/m2/s 168 zheat = zmelt * pt%heat_density ! kg/s x J/kg = J/s 169 berg_grid%calving_hflx (ii,ij) = berg_grid%calving_hflx (ii,ij) + zheat * z1_e1e2 ! W/m2 170 CALL icb_dia_melt( ii, ij, zMnew, zheat, this%mass_scaling, & 169 !! NB. The src_calving_hflx field is currently hardwired to zero in icb_stp, which means that the 170 !! heat density of the icebergs is zero and the heat content flux to the ocean from iceberg 171 !! melting is always zero. Leaving the term in the code until such a time as this is fixed. DS. 172 zheat_hcflux = zmelt * pt%heat_density ! heat content flux : kg/s x J/kg = J/s 173 zheat_latent = - zmelt * rLfus ! latent heat flux: kg/s x J/kg = J/s 174 berg_grid%calving_hflx (ii,ij) = berg_grid%calving_hflx (ii,ij) + ( zheat_hcflux + zheat_latent ) * z1_e1e2 ! W/m2 175 CALL icb_dia_melt( ii, ij, zMnew, zheat_hcflux, zheat_latent, this%mass_scaling, & 171 176 & zdM, zdMbitsE, zdMbitsM, zdMb, zdMe, & 172 177 & zdMv, z1_dt_e1e2 ) … … 214 219 IF(.NOT. ln_passive_mode ) THEN 215 220 emp (:,:) = emp (:,:) - berg_grid%floating_melt(:,:) 216 !! qns (:,:) = qns (:,:) + berg_grid%calving_hflx (:,:) !!gm heat flux not yet properly coded ==>> need it, SOLVE that! 221 qns (:,:) = qns (:,:) + berg_grid%calving_hflx (:,:) 217 222 ENDIF 218 223 ! -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/OCE/IOM/iom.F90
r9950 r10011 150 150 ! 151 151 IF( TRIM(cdname) == TRIM(cxios_context) ) THEN 152 CALL set_grid( "T", glamt, gphit, .FALSE. )153 CALL set_grid( "U", glamu, gphiu, .FALSE. )154 CALL set_grid( "V", glamv, gphiv, .FALSE. )155 CALL set_grid( "W", glamt, gphit, .FALSE. )152 CALL set_grid( "T", glamt, gphit, .FALSE., .FALSE. ) 153 CALL set_grid( "U", glamu, gphiu, .FALSE., .FALSE. ) 154 CALL set_grid( "V", glamv, gphiv, .FALSE., .FALSE. ) 155 CALL set_grid( "W", glamt, gphit, .FALSE., .FALSE. ) 156 156 CALL set_grid_znl( gphit ) 157 157 ! … … 171 171 CALL dom_grid_crs ! Save the parent grid information & Switch to coarse grid domain 172 172 ! 173 CALL set_grid( "T", glamt_crs, gphit_crs, .FALSE. )174 CALL set_grid( "U", glamu_crs, gphiu_crs, .FALSE. )175 CALL set_grid( "V", glamv_crs, gphiv_crs, .FALSE. )176 CALL set_grid( "W", glamt_crs, gphit_crs, .FALSE. )173 CALL set_grid( "T", glamt_crs, gphit_crs, .FALSE., .FALSE. ) 174 CALL set_grid( "U", glamu_crs, gphiu_crs, .FALSE., .FALSE. ) 175 CALL set_grid( "V", glamv_crs, gphiv_crs, .FALSE., .FALSE. ) 176 CALL set_grid( "W", glamt_crs, gphit_crs, .FALSE., .FALSE. ) 177 177 CALL set_grid_znl( gphit_crs ) 178 178 ! … … 227 227 IF( TRIM(cdname) == TRIM(crxios_context) ) THEN 228 228 !set names of the fields in restart file IF using XIOS to read data 229 CALL iom_set_rst_context( )229 CALL iom_set_rst_context(.TRUE.) 230 230 CALL iom_set_rst_vars(rst_rfields) 231 231 !set which fields are to be read from restart file … … 233 233 ELSE IF( TRIM(cdname) == TRIM(cwxios_context) ) THEN 234 234 !set names of the fields in restart file IF using XIOS to write data 235 CALL iom_set_rst_context( )235 CALL iom_set_rst_context(.FALSE.) 236 236 CALL iom_set_rst_vars(rst_wfields) 237 237 !set which fields are to be written to a restart file … … 571 571 END SUBROUTINE iom_set_rstw_active 572 572 573 SUBROUTINE iom_set_rst_context( 573 SUBROUTINE iom_set_rst_context(ld_rstr) 574 574 !!--------------------------------------------------------------------- 575 575 !! *** SUBROUTINE iom_set_rst_context *** … … 579 579 !! 580 580 !!--------------------------------------------------------------------- 581 LOGICAL, INTENT(IN) :: ld_rstr 582 !ld_rstr is true for restart context. There is no need to define grid for 583 !restart read, because it's read from file 581 584 #if defined key_iomput 582 585 TYPE(xios_domaingroup) :: domaingroup_hdl … … 589 592 CALL xios_get_handle("domain_definition",domaingroup_hdl) 590 593 CALL xios_add_child(domaingroup_hdl, domain_hdl, "grid_N") 591 CALL set_grid("N", glamt, gphit, .TRUE. )594 CALL set_grid("N", glamt, gphit, .TRUE., ld_rstr) 592 595 593 596 CALL xios_get_handle("axis_definition",axisgroup_hdl) … … 1935 1938 1936 1939 1937 SUBROUTINE set_grid( cdgrd, plon, plat, ldxios )1940 SUBROUTINE set_grid( cdgrd, plon, plat, ldxios, ldrxios ) 1938 1941 !!---------------------------------------------------------------------- 1939 1942 !! *** ROUTINE set_grid *** … … 1947 1950 INTEGER :: ni, nj 1948 1951 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmask 1949 LOGICAL, INTENT(IN) :: ldxios 1952 LOGICAL, INTENT(IN) :: ldxios, ldrxios 1950 1953 !!---------------------------------------------------------------------- 1951 1954 ! … … 1955 1958 CALL iom_set_domain_attr("grid_"//cdgrd, ni_glo=jpiglo, nj_glo=jpjglo, ibegin=nimpp+nldi-2, jbegin=njmpp+nldj-2, ni=ni, nj=nj) 1956 1959 CALL iom_set_domain_attr("grid_"//cdgrd, data_dim=2, data_ibegin = 1-nldi, data_ni = jpi, data_jbegin = 1-nldj, data_nj = jpj) 1957 CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), & 1960 !don't define lon and lat for restart reading context. 1961 IF ( .NOT.ldrxios ) & 1962 CALL iom_set_domain_attr("grid_"//cdgrd, lonvalue = RESHAPE(plon(nldi:nlei, nldj:nlej),(/ ni*nj /)), & 1958 1963 & latvalue = RESHAPE(plat(nldi:nlei, nldj:nlej),(/ ni*nj /))) 1959 1964 ! -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/OCE/LBC/mpp_nfd_generic.h90
r9945 r10011 95 95 ALLOCATE( ztabl(jpimax ,4,ipk,ipl,ipf) , ztabr(jpimax*jpmaxngh,4,ipk,ipl,ipf) ) 96 96 ! 97 ztabr(:,:,:,:,:) = 0._wp 98 ztabl(:,:,:,:,:) = 0._wp 97 ! when some processors of the north fold are suppressed, 98 ! values of ztab* arrays corresponding to these suppressed domain won't be defined 99 ! and we need a default definition to 0. 100 ! a better test should be: a testing if "suppressed land-processors" belongs to the north-pole folding 101 IF ( jpni*jpnj /= jpnij ) THEN 102 ztabr(:,:,:,:,:) = 0._wp 103 ztabl(:,:,:,:,:) = 0._wp 104 END IF 99 105 ! 100 106 DO jf = 1, ipf … … 183 189 ALLOCATE( znorthgloio(jpimax,4,ipk,ipl,ipf,jpni) ) 184 190 ! 185 ztab(:,:,:,:,:)=0._wp 191 ! when some processors of the north fold are suppressed, 192 ! values of ztab* arrays corresponding to these suppressed domain won't be defined 193 ! and we need a default definition to 0. 194 ! a better test should be: a testing if "suppressed land-processors" belongs to the north-pole folding 195 IF ( jpni*jpnj /= jpnij ) ztab(:,:,:,:,:)=0._wp 186 196 ! 187 197 CALL MPI_ALLGATHER( znorthloc , itaille, MPI_DOUBLE_PRECISION, & -
NEMO/branches/UKMO/NEMO4_beta_mirror/src/OCE/SBC/sbcwave.F90
r9950 r10011 131 131 END DO 132 132 ELSE IF( ll_st_peakfr ) THEN ! peak wave number calculated from the peak frequency received by the wave model 133 DO jj = 1, jpj 134 DO ji = 1, jpi 135 zk_t(ji,jj) = ( 2.0_wp * rpi * wfreq(ji,jj) ) * ( 2.0_wp * rpi * wfreq(ji,jj) ) / grav 136 END DO 137 END DO 133 138 DO jj = 1, jpjm1 134 139 DO ji = 1, jpim1 135 zk_u(ji,jj) = 0.5_wp * ( wfreq(ji,jj)*wfreq(ji,jj) + wfreq(ji+1,jj)*wfreq(ji+1,jj) ) / grav136 zk_v(ji,jj) = 0.5_wp * ( wfreq(ji,jj)*wfreq(ji,jj) + wfreq(ji,jj+1)*wfreq(ji,jj+1) ) / grav140 zk_u(ji,jj) = 0.5_wp * ( zk_t(ji,jj) + zk_t(ji+1,jj) ) 141 zk_v(ji,jj) = 0.5_wp * ( zk_t(ji,jj) + zk_t(ji,jj+1) ) 137 142 ! 138 143 zu0_sd(ji,jj) = 0.5_wp * ( ut0sd(ji,jj) + ut0sd(ji+1,jj) ) -
NEMO/branches/UKMO/NEMO4_beta_mirror/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_cen-ahm1000_cfg
r9527 r10011 39 39 &namtsd ! data : Temperature & Salinity 40 40 !----------------------------------------------------------------------- 41 ln_tsd_init = .false. ! Initialisation of ocean T & S with T &S input data (T) or not (F)42 ln_tsd_tradmp = .false. ! damping of ocean T & S toward T &S input data (T) or not (F)43 41 / 44 42 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/NEMO4_beta_mirror/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_ubs_cfg
r9527 r10011 39 39 &namtsd ! data : Temperature & Salinity 40 40 !----------------------------------------------------------------------- 41 ln_tsd_init = .false. ! Initialisation of ocean T & S with T &S input data (T) or not (F)42 ln_tsd_tradmp = .false. ! damping of ocean T & S toward T &S input data (T) or not (F)43 41 / 44 42 !----------------------------------------------------------------------- -
NEMO/branches/UKMO/NEMO4_beta_mirror/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_vect_een_cfg
r9527 r10011 137 137 !----------------------------------------------------------------------- 138 138 ln_dynvor_ene = .false. ! enstrophy conserving scheme 139 ln_dynvor_ens = . true.! energy conserving scheme139 ln_dynvor_ens = .false. ! energy conserving scheme 140 140 ln_dynvor_mix = .false. ! mixed scheme 141 141 ln_dynvor_een = .true. ! energy & enstrophy scheme
Note: See TracChangeset
for help on using the changeset viewer.