Custom Query (986 matches)
Results (553 - 555 of 986)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#669 | Done | New option LIMIT_STFLX_COOLING | ||
Description |
A new option LIMIT_STFLX_COOLING is introduced in routine set_vbc to supress surface cooling if the model surface temperature is at freezing point (-2 Celsius) or below and the net heat flux is cooling. This can be used in the absent of a sea-ice model to limit cooling in shallow coastal areas, for example. The following code is added to set_vbc.F: # ifdef LIMIT_STFLX_COOLING ! !----------------------------------------------------------------------- ! If net heat flux is cooling and SST is at freezing point or below ! then suppress further cooling. Note: stflx sign convention is that ! positive means heating the ocean (J Wilkin). !----------------------------------------------------------------------- ! ! Below the surface heat flux stflx(:,:,itemp) is ZERO if cooling AND ! the SST is cooler that the threshold. The value is retained if ! warming. ! ! cff3 = 0 if SST warmer than threshold (cff1) - change nothing ! cff3 = 1 if SST colder than threshold (cff1) ! ! 0.5*(cff2-ABS(cff2)) = 0 if flux is warming ! = stflx(:,:,itemp) if flux is cooling ! cff1=-2.0_r8 ! nominal SST threshold to cease cooling DO j=JstrR,JendR DO i=IstrR,IendR cff2=stflx(i,j,itemp) cff3=0.5_r8*(1.0_r8+SIGN(1.0_r8,cff1-t(i,j,N(ng),nrhs,itemp))) stflx(i,j,itemp)=cff2-cff3*0.5_r8*(cff2-ABS(cff2)) END DO END DO # endif This option is also added to the tangent linear, representer, and adjoint versions of set_vbc.F. This option was requested by our users at NOAA and it is working well in their coastal applications. Many thanks to John Wilkin for helping coding this limit in the surface net heat flux. |
|||
#673 | Fixed | DOGBONE NetCDF contact files and the header file | ||
Description |
For the DOGBONE test case there are 2 issues: 1) the header file dogbone.h has # define TS_U3HADVECTION" # define TS_C4VADVECTION" and this should be changed to (need to remove double quotes at the end) # define TS_U3HADVECTION # define TS_C4VADVECTION 2) The NetCDF contact file for the DOGBONE example seems corrupt. I generated this newer version using: Gnames={'dogbone_grd_whole.nc','dogbone_grd_href3.nc'} [S,G]=contact(Gnames,'dogbone_contact_refined.nc') I am attaching the dogbone_contact_refined.nc. This worked for me. It needs to replace the dogbone_ngc_refined.nc. |
|||
#674 | Done | New option AGE_MEAN for inert passive tracers | ||
Description |
A new option AGE_MEAN was added to compute the Mean Age of a inert passive tracer when T_PASSIVE is activated. This can be used to compute, for example, the age and residence time of particular water parcels (like river runoff, dyes, contaminants, etc). An inert passive tracer in ROMS is one that does not contain a source/sink term in the right-hand-side like bio-geochemical and sediment tracers. We need to have an even number of inert passive tracers (NPT). The code is implemented in pairs where odd index (say inert(1)...) corresponds to the inert tracer concentration to simulate and the even index is the respective Mean Age concentration (say inert(2)...). For example for NPT=4, we get the following output fields: double dye_01(ocean_time, s_rho, eta_rho, xi_rho) ; dye_01:long_name = "dye concentration, type 01" ; dye_01:units = "kilogram meter-3" ; dye_01:time = "ocean_time" ; dye_01:coordinates = "x_rho y_rho s_rho ocean_time" ; dye_01:field = "dye_01, scalar, series" ; dye_01:_FillValue = 1.e+37 ; double dye_01_age(ocean_time, s_rho, eta_rho, xi_rho) ; dye_01_age:long_name = "dye concentration mean age, type 01" ; dye_01_age:units = "second" ; dye_01_age:time = "ocean_time" ; dye_01_age:coordinates = "x_rho y_rho s_rho ocean_time" ; dye_01_age:field = "dye_01_age, scalar, series" ; dye_01_age:_FillValue = 1.e+37 ; double dye_02(ocean_time, s_rho, eta_rho, xi_rho) ; dye_02:long_name = "dye concentration, type 02" ; dye_02:units = "kilogram meter-3" ; dye_02:time = "ocean_time" ; dye_02:coordinates = "x_rho y_rho s_rho ocean_time" ; dye_02:field = "dye_02, scalar, series" ; dye_02:_FillValue = 1.e+37 ; double dye_02_age(ocean_time, s_rho, eta_rho, xi_rho) ; dye_02_age:long_name = "dye concentration mean age, type 02" ; dye_02_age:units = "second" ; dye_02_age:time = "ocean_time" ; dye_02_age:coordinates = "x_rho y_rho s_rho ocean_time" ; dye_02_age:field = "dye_02_age, scalar, series" ; dye_02_age:_FillValue = 1.e+37 ; This option is implemented in pre_step3d.F and step3d_t.F and associated adjoint and tangent linear versions. Many thanks to Gordon Zhang and John Wilkin for their help in coding and testing this option. For more information how this option can be used please check the following reference:
I also modified inp_par.F, read_asspar.F and read_physpar.F to pass an additional parameter to load_s1d and load_s2d corresponding to the dimension (Fdim) of the Fname string array in the calling program: FUNCTION load_s1d (Nval, Fname, Fdim, line, label, igrid, Nfiles, & & S) FUNCTION load_s2d (Nval, Fname, Fdim, line, label, ifile, igrid, & & Nfiles, Ncount, idim, S) This is to facilitate changes in the dimension of Fname in the calling program. |