Custom Query (986 matches)
Results (442 - 444 of 986)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#551 | Done | IMPORTANT: Major overhault of scripts on the ROMS Matlab repository | ||
Description |
I have been working on a major overhaul of Matlab scripts and tools in the ROMS repository for several weeks. Since all the data in ROMS is managed with NetCDF files, some of these scripts use a NetCDF interface to Matlab to process the data. There are several interfaces for Matlab available from third parties. The most widely used interfaces are MEXNC and SNCTOOLS. However, starting with Matlab version 2012a, released on Feb 9, 2012, the native interface to NetCDF is the preferred method for processing NetCDF data in the scripts distributed in the ROMS repository matlab and described here. The native interface was introduced in Matlab version 2008b for NetCDF-3 type files. The NetCDF-4 support started in version 2010b. The support for HDF5 files was completed in version 2011a. The OpenDAP support began in version 2012a. If your Matlab version is older than 2008b, we highly recommend that you update to the newest version. However, in the basic generic scripts we have switches for older versions to activate either the MEXNC interface for standard NetCDF files and the SNCTOOLS interface to process NetCDF files on an OpenDAP server. Nesting Scripts: This update also includes several new scripts to process ROMS nesting contact regions and contact points. The contact points are processed outside of ROMS and all the connectivity within nested grids is read from an input NetCDF file. This facilitates the configuration of various grid Sub-Classes. It tremendously simplifies the processing of such points in parallel computations. It also gives the user full editing control of the contact points. The contact points need to be set-up once for a particular application. The information about these new scripts is very technical and difficult to explain with plain words. We need definitions, equations, and a lot of diagrams to explain and illustrate the complexity of ROMS nesting capabilities. Therefore, we decided to put all that information in WikiROMS instead of a very long message in this forum. In particular, we added two new menus to the documentation portal:
|
|||
#552 | Done | IMPORTANT: OpenMP shared-memory directives Revisited | ||
Description |
This update includes a full revision of ROMS shared-memory pragma directives using OpenMP standard. This is a very important and delicate update that requires expertise. Luckly, I doubth that will affect your customized code. All the parallel loops of ROMS are modified to simpler directives. For example, the old strategy: !$OMP PARALLEL DO PRIVATE(thread,subs,tile) SHARED(numthreads) DO thread=0,numthreads-1 subs=NtileX(ng)*NtileE(ng)/numthreads DO tile=subs*thread,subs*(thread+1)-1,+1 ... END DO END DO !$OMP END PARALLEL DO is replaced with: DO tile=first_tile(ng),last_tile(ng),+1 ... END DO !$OMP BARRIER In shared-memory, the parallel threads are spawn in the higher calling routines (drivers). For example, we now have: !$OMP PARALLEL CALL main3d (RunInterval) !$OMP END PARALLEL This directive is less restrictive and allows MASTER, BARRIER, and other useful OpenMP pragmas inside the parallel regions. If you are interested, please see the following discussion in the Forum. This change cleans the code and facilitates parallelization of tricky algorithms for nesting, MPDATA, random number generation, point-sources, etc using the shared-memory paradigm. WARNINGS:
Many thanks to Sasha shchepetkin for suggesting this strategy. Also many thanks to Mark Hadfield for his persistence and testing. |
|||
#553 | Done | Added biological behavior to Langrangian Drifters: Oyster Model | ||
Description |
A new option FLOAT_OYSTER has been added to model the swimming, sinking, and settlement of planktonic oyster larvae. This development includes the infrastructure to add different behaviors to the Lagrangian drifters (FLOATS). The design is similar to that of the ecosystem models in ROMS and includes several header files, as described below. This option is under the umbrella of internal C-preprocessing flag FLOAT_BIOLOGY, which is defined in globaldefs.h. The biological behavior for the floats is achieved by interpolating additional variables using interp_floats in step_floats.F and then calling biology_floats in the predictor and corrector steps: # ifdef FLOAT_BIOLOGY ! !----------------------------------------------------------------------- ! Compute biological float behavior, corrector step. !----------------------------------------------------------------------- ! CALL biology_floats (ng, Lstr, Lend, .FALSE., my_thread) # endif The planktonic behavior is based on the model of Dekshenieks et al. (1993; 1996; 1997). It calculates the size (length) and development of oyster larvae. This model was implement in ROMS with the help of Diego Narvaez as part of his Ph.D. dissertation. Many thanks to John Klinck for his suggestions about the numerical implementation using the predictor/corrector scheme of the floats. Results about this oyster model can be found in Narvaez et al. 2012 a,b (J. Mar. Res., in review). This model includes the following files:
NOTES:
This capability illustrates how the biological behavior kernel can be implemented in ROMS floats. It is up to the user to validate and test their own customized behavior models. Good luck... |