Custom Query (986 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (559 - 561 of 986)

Ticket Owner Reporter Resolution Summary
#680 arango arango Done IMPORTANT: stations and floats in nesting applications
Description

STATIONS:

The routine read_stapar.F that reads the stations input script (stations.in) was updated so the CPP option STATIONS is more robust across nested grids. Only one stations.in input script is needed in nested applications. As in ocean.in, we just need to use the plural symbol == after the KEYWORD for relevant nested grids parameters.

For example, in a four nested grids application we can have:

! Switch to control the writing of stations data within nested and/or multiple
! connected grids, [1:Ngrids].

   Lstations == T T T T

! Logical switches (TRUE/FALSE) to activate writing of fields in STATION
! output file, [Sout(:,ng), ng=1, Ngrids].

Sout(idUvel) == 4*T     ! u                  3D U-velocity
Sout(idVvel) == 4*T     ! v                  3D V-velocity
Sout(idu3dE) == 4*F     ! u_eastward         3D U-eastward at RHO-points
Sout(idv3dN) == 4*F     ! v_northward        3D V-nortward at RHO-points
Sout(idWvel) == 4*T     ! w                  3D W-velocity
Sout(idOvel) == 4*T     ! omega              3D omega vertical velocity
Sout(idUbar) == 4*T     ! ubar               2D U-velocity
Sout(idVbar) == 4*T     ! vbar               2D V-velocity
Sout(idu2dE) == 4*F     ! ubar_eastward      2D U-eastward  at RHO-points
Sout(idv2dN) == 4*F     ! vbar_northward     2D V-northward at RHO-points
Sout(idFsur) == 4*T     ! zeta               free-surface
Sout(idBath) == 4*T     ! bath               time-dependent bathymetry

Sout(idTvar) == 8*T     ! temp, salt, ...    all (NT) tracers

Sout(idUsms) == 4*T     ! sustr              surface U-stress
Sout(idVsms) == 4*T     ! svstr              surface V-stress
Sout(idUbms) == 4*T     ! bustr              bottom U-stress
Sout(idVbms) == 4*T     ! bvstr              bottom V-stress

Sout(idUbrs) == 4*F     ! bustrc             bottom U-current stress
Sout(idVbrs) == 4*F     ! bvstrc             bottom V-current stress
Sout(idUbws) == 4*F     ! bustrw             bottom U-wave stress
Sout(idVbws) == 4*F     ! bvstrw             bottom V-wave stress
Sout(idUbcs) == 4*F     ! bustrcwmax         bottom max wave-current U-stress
Sout(idVbcs) == 4*F     ! bvstrcwmax         bottom max wave-current V-stress

Sout(idUbot) == 4*F     ! Ubot               bed wave orbital U-velocity
Sout(idVbot) == 4*F     ! Vbot               bed wave orbital V-velocity
Sout(idUbur) == 4*F     ! Ur                 bottom U-velocity above bed
Sout(idVbvr) == 4*F     ! Vr                 bottom V-velocity above bed

Sout(idW2xx) == 4*F     ! Sxx_bar            2D radiation stress, Sxx component
Sout(idW2xy) == 4*F     ! Sxy_bar            2D radiation stress, Sxy component
Sout(idW2yy) == 4*F     ! Syy_bar            2D radiation stress, Syy component
Sout(idU2rs) == 4*F     ! Ubar_Rstress       2D radiation U-stress
Sout(idV2rs) == 4*F     ! Vbar_Rstress       2D radiation V-stress
Sout(idU2Sd) == 4*F     ! ubar_stokes        2D U-Stokes velocity
Sout(idV2Sd) == 4*F     ! vbar_stokes        2D V-Stokes velocity

Sout(idW3xx) == 4*F     ! Sxx                3D radiation stress, Sxx component
Sout(idW3xy) == 4*F     ! Sxy                3D radiation stress, Sxy component
Sout(idW3yy) == 4*F     ! Syy                3D radiation stress, Syy component
Sout(idW3zx) == 4*F     ! Szx                3D radiation stress, Szx component
Sout(idW3zy) == 4*F     ! Szy                3D radiation stress, Szy component
Sout(idU3rs) == 4*F     ! u_Rstress          3D U-radiation stress
Sout(idV3rs) == 4*F     ! v_Rstress          3D V-radiation stress
Sout(idU3Sd) == 4*F     ! u_stokes           3D U-Stokes velocity
Sout(idV3Sd) == 4*F     ! v_stokes           3D V-Stokes velocity

Sout(idWamp) == 4*F     ! Hwave              wave height
Sout(idWlen) == 4*F     ! Lwave              wave length
Sout(idWdir) == 4*F     ! Dwave              wave direction
Sout(idWptp) == 4*F     ! Pwave_top          wave surface period
Sout(idWpbt) == 4*F     ! Pwave_bot          wave bottom period
Sout(idWorb) == 4*F     ! Ub_swan            wave bottom orbital velocity
Sout(idWdis) == 4*F     ! Wave_dissip        wave dissipation

Sout(idPair) == 4*F     ! Pair               surface air pressure
Sout(idUair) == 4*F     ! Uair               surface U-wind component
Sout(idVair) == 4*F     ! Vair               surface V-wind component

Sout(idTsur) == 8*F     ! shflux, ssflux     surface net heat and salt flux
Sout(idLhea) == 4*F     ! latent             latent heat flux
Sout(idShea) == 4*F     ! sensible           sensible heat flux
Sout(idLrad) == 4*F     ! lwrad              longwave radiation flux
Sout(idSrad) == 4*F     ! swrad              shortwave radiation flux
Sout(idEmPf) == 4*F     ! EminusP            E-P flux
Sout(idevap) == 4*F     ! evaporation        evaporation rate
Sout(idrain) == 4*F     ! rain               precipitation rate

Sout(idDano) == 4*T     ! rho                density anomaly
Sout(idVvis) == 4*T     ! AKv                vertical viscosity
Sout(idTdif) == 4*T     ! AKt                vertical T-diffusion
Sout(idSdif) == 4*T     ! AKs                vertical Salinity diffusion
Sout(idHsbl) == 4*T     ! Hsbl               depth of surface boundary layer
Sout(idHbbl) == 4*F     ! Hbbl               depth of bottom boundary layer
Sout(idMtke) == 4*F     ! tke                turbulent kinetic energy
Sout(idMtls) == 4*F     ! gls                turbulent length scale

! Logical switches (TRUE/FALSE) to activate writing of exposed sediment
! layer properties into STATIONS output file.  Currently, MBOTP properties
! are expected for the bottom boundary layer and/or sediment models:
!
! idBott( 1=isd50)   grain_diameter          mean grain diameter
! idBott( 2=idens)   grain_density           mean grain density
! idBott( 3=iwsed)   settling_vel            mean settling velocity
! idBott( 4=itauc)   erosion_stress          critical erosion stress
! idBott( 5=irlen)   ripple_length           ripple length
! idBott( 6=irhgt)   ripple_height           ripple height
! idBott( 7=ibwav)   bed_wave_amp            wave excursion amplitude
! idBott( 8=izdef)   Zo_def                  default bottom roughness
! idBott( 9=izapp)   Zo_app                  apparent bottom roughness
! idBott(10=izNik)   Zo_Nik                  Nikuradse bottom roughness
! idBott(11=izbio)   Zo_bio                  biological bottom roughness
! idBott(12=izbfm)   Zo_bedform              bed form bottom roughness
! idBott(13=izbld)   Zo_bedload              bed load bottom roughness
! idBott(14=izwbl)   Zo_wbl                  wave bottom roughness
! idBott(15=iactv)   active_layer_thickness  active layer thickness
! idBott(16=ishgt)   saltation               saltation height
!
!                                 1 1 1 1 1 1 1
!               1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6

Sout(idBott) == F F F F F F F F F F F F F F F F \
                F F F F F F F F F F F F F F F F \
                F F F F F F F F F F F F F F F F \
                F F F F F F F F F F F F F F F F

! Number of stations to process in each nested grid.  These values are
! essential because the station arrays are dynamically allocated using
! these values, [1:Ngrids].

    NSTATION ==  1 1 1 1

! Station locations for all grids in any desired order.  The horizontal
! location for a particular station may be specified in terms of fractional
! (I,J) grid pairs (FLAG=0) or (longitude,latitude) grid pairs (FLAG=1).
! Here, FLAG is a special switch and may be used for multiple purposes.
! The GRID column indicates nested grid number to process. This value must
! be one in non-nested applications.  The COMMENT section is ignored during
! reading and may be used to help documentation.

POS =  GRID  FLAG      X-POS       Y-POS     COMMENT

         1    0        50.0d0      40.0d0
         2    0        60.0d0      65.0d0
         3    0        57.0d0      30.0d0
         4    0        66.0d0      25.0d0

Users need to pay attention to all the above parameters. In particular: Lstations, NSTATION, and POS.


FLOATS:

Similarly, one floats.in is need in nested applications when the CPP option FLOATS is activated. Currently, the floats trajectories are independent of each nested grid. That is, once that the trajectory exit a particular grid it will not continue into the other nested grids. We will figure out in the future how to allow this but it is not high in our priority list.

As mentioned above, we just need to use the plural symbol == after the KEYWORD for nested grids parameters. For example, in a four nested grids application we can have:

! Switch to control the computation of floats trajectories within nested
! and/or multiple connected grids, [1:Ngrids].
!
     Lfloats == T F F F

! Switch to control the printing of floats initial positions to standard
! output file, [1:Ngrids].
!
      Fprint == T T T T

! Flag indicating re-start from previous solution. If FRREC = 0, a new
! NetCDF output file is created.

       FRREC == 4*0 

! If applicable, input script file name containing biological floats behavior
! model parameters.

     FBIONAM =  behavior_oyster.in

! Number of floats to release in each nested grid.  These values are
! essential because the FLOATS structure in "mod_floats" is dynamically
! allocated using these values, [1:Ngrids].

     NFLOATS == 1 1 1 1

! Initial floats locations for all grids:
!
!   G      Nested grid number
!   C      Initial horizontal coordinate type (0: grid units, 1: spherical)
!   T      Float trajectory type (1: Lagrangian, 2: isobaric, 3: Geopotential)
!   N      Number floats to be released at (Fx0,Fy0,Fz0)
!   Ft0    Float release time (days) after model initialization
!   Fx0    Initial float X-location (grid units or longitude)
!   Fy0    Initial float Y-location (grid units or latitude)
!   Fz0    Initial float Z-location (grid units or depth)
!   Fdt    Float cluster release time interval (days)
!   Fdx    Float cluster X-distribution parameter
!   Fdy    Float cluster Y-distribution parameter
!   Fdz    Float cluster Z-distribution parameter

POS = G, C, T, N,   Ft0,    Fx0,    Fy0,    Fz0,    Fdt,    Fdx,    Fdy,   Fdz

      1  0  1  1   0.0d0   50.0d0  40.0d0   8.0d0   0.0d0   0.0d0   0.0d0  0.0d0
      2  0  1  1   0.0d0   60.0d0  65.0d0   8.0d0   0.0d0   0.0d0   0.0d0  0.0d0 
      3  0  1  1   0.0d0   57.0d0  30.0d0   8.0d0   0.0d0   0.0d0   0.0d0  0.0d0 
      4  0  1  1   0.0d0   66.0d0  25.0d0   8.0d0   0.0d0   0.0d0   0.0d0  0.0d0 

Users need to pay attention to the following parameters Lfloats, NFLOATS. and POS.


Corrected nesting.F around Line 122 to avoid compilation problems when MASKING is not activated:

# if defined MASKING || defined WET_DRY
      PRIVATE :: mask_hweights
# endif

Many thanks to Jamie Pringle for bringing this to my attention.

#681 arango arango Done IMPORTANT: replacing option SPLINES
Description

The C-preprocessing option SPLINES have been in ROMS since the beginning. It is used to activate conservative, parabolic splines reconstruction of vertical derivatives in the following routines:

  • gls_corstep.F: vertical velocity shear for Richardson Number (if option GLS_MIXING)
  • my25_corstep.F: vertical velocity shear for Richardson Number (if option MY25_MIXING)
  • lmd_bkpp.F: bulk Richardson Number (if options LMD_MIXING and LMD_BKPP)
  • lmd_skpp.F: bulk Richardson Number (if options LMD_MIXING and LMD_SKPP)
  • lmd_vmix.F: bulk Richardson Number (if option LMD_MIXING)
  • step3d_t.F: vertical diffusion
  • step3d_uv.F: vertical viscosity

There has been several messages in the ROMS forum discussing the problems when SPLINES is used to compute vertical viscosity and vertical diffusion. This was first brought to our attention by Evgeny Logvinov when checking the stress condition (sustr = Akv * du/dz and svstr = Akv * dv/dz). He noticed that the stress condition was not holding and he got a very sharp change in du/dz and dv/dz 1m below the surface. Everything worked fine when SPLINES was not activated. Similar behavior was discussed Chris Sherwood.

I know of several users that avoid using the SPLINES option because the of the surface and bottom stress condition needs to be preserved. However, it is nice is nice to have the parabolic splines reconstruction when computing either Richardson Number or Bulk Richardson Number. The vertical velocity shear (used as a squared quantity in the denominator) is a very noisy quantity so using parabolic splines yields a smoother values.

Therefore, the C-preprocessing option SPLINES is removed and replaced with following three options for more flexibility:

  • SPLINES_VDIFF: conservative, parabolic splines reconstruction for vertical diffusion on active and passive tracers (step3d_t.f).
  • SPLINES_VVISC: conservative, parabolic splines reconstruction for vertical diffusion on active and passive tracers (step3d_uv.f).
  • RI_SPLINES: conservative, parabolic splines reconstruction for vertical velocity shear used in the Richardson Number (gls_corstep.F and my25_corstep.F) and Bulk Richardson Number (lmd_bkpp.F, lmd_skpp.F, and lmd_vmis.F).

WARNING: ROMS will issue an error message if the option SPLINES is activated after this update. The user will need to activate the SPLINES_VVISC and SPLINES_VDIFF. Also you will need to activate RI_SPLINES if using GLS_MIXING, LMD_MIXING, MY25_MIXING. Therefore, users need to update the header file for their applications.

Several header files were updated in the trunk repository and test repositories. I highly recommend users to update their repositories.


The new options provide more flexibility while preserving legacy codes and applications. Users should get identical results if activating the new options described above.

#682 arango arango Fixed Profile Report
Description

The routines wclock_on and wclock_off (timers.F) fail to report the profile timings in distributed-memory applications (MPI). This has been broken for awhile since the OpenMP directives were re-worked (see src:ticket:552). In that update the numthreads was modified in MPI to have the number of distributed nodes:

      CALL mpi_comm_size (OCN_COMM_WORLD, numthreads, MyError)

This affected the logic in wclock_on and wclock_off in MPI applications, which needs numthreads = 1. To correct this problem, both routines were modified to have:

!
!  Set number of subdivisions, same as for global reductions.
!
#ifdef MPI
      NSUB=1
#else
      NSUB=numthreads
#endif

then, we use NSUB instead of numthreads in the conditional statement in wclock_on:

       IF (thread_count.eq.NSUB) thread_count=0

and in wclock_off:

        IF (thread_count.eq.NSUB) THEN
          thread_count=0
          ...
        END IF

I also improved the time profile report in nested grid applications.

Many thanks to Kate Hedstrom for reminding me about this problem.

Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.