Custom Query (964 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (898 - 900 of 964)

Ticket Owner Reporter Resolution Summary
#891 arango Done VERY IMPORTANT: Removed Lib and Waves from repository
Description

The new strategy of Rutgers's official repository is to have only the source code associated with ROMS. The support libraries are removed because of legacy issues that include obsolete features from the modern Fortran standard (versions 1995, 2003, 2008, and 2018).

In particular, NOAA and NCEP/NCO have inquired about the large number (in the thousands) of GOTOs in the ROMS source code directory tree. Most of the GOTOs are found in SWAN and the legacy ARPACK/PARPACK, BLAS, and LAPACK libraries. Currently, ROMS uses 62 GOTOs that are used exclusively when processing standard input files to provide the users with error information and flow control with a meaningful exit, which is still supported by all the modern versions of the Fortran standard. We cannot use SELECT CASE, CYCLE, EXIT, WAIT or RETURN in such cases.

The ARPACK library and friends are moved to its own repository at:

svn checkout htpps://www.myroms.org/svn/src/libs/ARPACK <MyLibs>

The MCT library has been removed. The version we have is very old. Users should download that library directly from GitHub if needed in COAWST applications:

git clone https://github.com/MCSclimate/MCT

The SWAN model in our version of ROMS is very old. Users should use the updated version available in COAWST.

#892 arango Done VERY IMPORTANT: doxygen source code browser
Description

The ROMS source code is modified to facilitate doxygen HTLM documentation, which is used extensively for generating information, dependencies, and visualizing the relationship between the components of modern source codes written with objective-oriented programming (OOP) principles in several computer languages (C, C++, Fortran, Java, Python, and so on).

It is a little more difficult to configure doxygen for Fortran source codes than C++. Still, thanks to David Robertson, we found satisfactory results with a sophisticated setup and minor smart changes to the ROMS source code layout.

The ROMS doxygen source code HTLM documentation is at www.myroms.org/doxygen.

Here is a summary of the changes to the code:

  • Change all occurrences of !> to !^, which are use to document the linearization of the nonlinear kernel to the tangent linear, representer, and adjoint kernels as a reference from the original. This avoids interference with doxygen native markdown syntax.
  • Minor cosmetic changes to the following modules for analytical.F, biology.F, bbl.F, propagator.F, prsgrd.F, step2d.F, t3dmix.F, and uv3dmix.F. Basically, the MODULE declarations are moved to the various flavors of .h include files. The private subrotines with suffix _tile are renamed to eliminate identical routine names that are activated with C-preprocessing options.

Below are examples of the graphical dependencies between code elements (directories and functions/routines).

http://www.myroms.org/doxygen/dir_22f00cc7a3d072c17dcf325d075af7a5_dep_org.svg

http://www.myroms.org/doxygen/namespacemod__netcdf_aef07e6f2f41a54f0809ea13b13c497cf_icgraph_org.svg

#893 arango Done IMPORTANT: Removed I/O related GOTOs
Description

Currently, there are 68 I/O flow control GOTOs in ROMS. In this update, it has been reduced to 6.

  • Using additional features of the 2003 Fortran standard, it is possible to remove the GOTOs associated with the ERR option in the OPEN statement. The new feature to the OPEN command gives more flexibility when opening files with flow control and error information.

For example, in inp_par.F we now have:

     OPEN (inp, FILE=TRIM(Iname), FORM='formatted', STATUS='old',      &
    &      IOSTAT=io_err, IOMSG=io_errmsg)
     IF (io_err.ne.0) THEN
       IF (Master) WRITE (stdout,30) TRIM(io_errmsg)
       exit_flag=5
       RETURN
30     FORMAT (/,' INP_PAR - Unable to open ROMS/TOMS input script ',  &
    &              'file.',/,11x,'ERROR: ',a)
     END IF

Using IOSTAT and IOMSG options is an elegant way to check for errors instead of old ERR option when opening files.

  • In routines read_asspar.F, read_fltpar.F, and read_phypar.F, the GOTOs are eliminated and the error control is moved inside the find_file function. For example, in read_phypar.F we now have:
    #ifndef ANA_GRID
              fname=GRD(ng)%name
              IF (.not.find_file(ng, out, fname, 'GRDNAME')) THEN
                IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
              ELSE
                WRITE (out,230) '                 Input Grid File:  ',      &
         &                      TRIM(fname)
              END IF
    #endif
    
  • The remaining six GOTOs are in the 4D-Var conjugate gradient routines congrad.F and rpcg_lanczos.F:
    ROMS/Utility/congrad.F:            GO TO 10
    ROMS/Utility/congrad.F:              GO TO 10
    ROMS/Utility/congrad.F:                GO TO 10
    ROMS/Utility/rpcg_lanczos.F:            GO TO 10
    ROMS/Utility/rpcg_lanczos.F:              GO TO 10
    ROMS/Utility/rpcg_lanczos.F:                GO TO 10
    
    They are used for parallel error flow control to inform the user about a fatal algorithm result in the 4D-Var dual formulation minimization. Here, the algorithm is only executed by the master process and we need to communicate to the other processes about such an error.
Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.