CMS-Flow:Features: Difference between revisions

From CIRPwiki
Jump to navigation Jump to search
mNo edit summary
Line 65: Line 65:
='''Other Features'''=
='''Other Features'''=
==Parallelization with OpenMP==
==Parallelization with OpenMP==
Both Intel and AMD processors now are shipping chips with multiple cores/processors (henceforth referred to as "processors") available.
Presently (08/4/2009) - To enable use of more than one processor (or more than one thread) in CMS-Flow, the user must specify the corresponding "Card" in the "Advanced" tab in the CMS-Flow model control in SMS 10.1 (unavailable in version SMS 10.0 and earlier):
OPENMP_THREADS  <# of threads>
This card takes as an argument the number of threads to use for a given application with the following rules:
# If more threads are requested than are available, only the maximum on the machine are used.
# If hyperthreading is allowed on that chip's architecture, all threads are used, up to the number requested.
  EXAMPLE 1
    Your machine has 8 cores, and you want to start a CMS-Flow run that 5 threads.
    "OPENMP_THREADS <white space> 5" is specified in the Advanced Card section.
===Hyperthreading===
*'''''Some''''' of the higher-end chips have a feature called "Hyperthreading" which allows each processor to split further into two "threads" which could further increase throughput of the work that processor performs.  For example, on an Intel Extreme Quad-core processor there are 4 cores, but with hyperthreading, there is a possibility of using '''8''' separate threads. 
*If you know that your computer has hyperthreading, you can actually specify "OPENMP_THREADS  2" and get better performance while still only using one '''physical''' processor.
  EXAMPLE 2
    Your machine has 4 Hyperthreading cores, and you want to start a CMS-Flow run that
    uses 5 threads (leaving 3 threads for other system and user processes). 
    You would enter the card "OPENMP_THREADS <white space> 5" and CMS-Flow would use 5
    threads.
===Requesting too many threads===
*If you specify a number that is too large for your particular machine to use, CMS-Flow will use the maximum number of threads available.
  EXAMPLE 3
    Your machine has 2 cores, and you start a CMS-Flow run with the card: 
      "OPENMP_THREADS  3".
    CMS-Flow will realize that your machine has only 2 cores and is not capable of
    hyperthreading.  The number of processors that will be used is '''2'''.
===SMS 10.1+ How-to===
The following animation quickly goes through the steps needed to add this capability to a CMS-Flow simulation.
[http://cirp.usace.army.mil/products/tutorials/MultiProcesses.html Animation]

Revision as of 19:48, 11 December 2009

Boundary Conditions

CMS-Flow has multiple types of boundary conditions which are listed and discussed below. All CMS-Flow boundary conditions are forced at the edges of the domain by use of cellstrings defined with the Surfacewater Modeling System.

Water Surface Elevation Forcing

Two types of Water Surface Elevation Forcing exist for CMS-Flow. Once a water surface elevation curve (or series of curves) is applied, the user is able to display the curve information graphically.

  1. Single value for all cells on a cellstring
  2. Multiple values on a cellstring (one for each cell)

Single Value

User creates a cellstring for the given boundary and defines a time-series curve. The value for each time on this curve is applied to all cells along the designated cellstring.

Multiple Values

User creates a cellstring for the given boundary and extracts multiple time-series curves from a dataset or database. Each cell along the cellstring is given its own time-series curve information. Examples are:

  • Extraction of water surface elevation values from a larger domain solution (ie. Larger CMS-Flow or ADCIRC grid)
  • Extraction of tidal constituent information from a tidal database, from which a water surface elevation curve can be generated.

Water Surface Elevation and Velocity Forcing

Users are able to extract both water surface elevations and velocity components from a larger domain solution (ie. Larger CMS-Flow or ADCIRC grid).

River Flow Forcing

User creates a cellstring for the given boundary, chooses a River Flow type for the cellstring, then creates a time-series curve of flow rates. NOTES:

  • Total flow rate specified is divided between the total number of cells in the cellstring with each carrying a portion of the total.
  • The sign of the flow rate curve is dependent on the direction of flow with respect to the origin (always lower-left hand corner of the grid). This guide should assist in proper assignment.
    • Flow rate from the East - Negative value
    • Flow rate from the West - Positive value
    • Flow rate from the North - Negative value
    • Flow rate from the South - Positive value

Salinity Concentration Forcing

If salinity transport is active for the simulation, the user has the ability to use existing hydrodynamic cellstrings in the interface in order to provide a time-series curve of salinity concentrations.

Units for Boundary Conditions

  • Water Surface Elevation - meters ()
  • Current Velocity - meters per second ()
  • Flow Rate - cubic meters per second ()
  • Salinity Concentration - parts per thousand ()

Global Forcing

There are two main types of global forcing available in CMS-Flow, wind and wave. Global forcing means that the forcing is applied on a cell-by-cell nature, rather than forcing along a boundary.

Wind Forcing

Temporally varying, spatially constant (ie. one value of wind applied for a given time to every computational cell in the domain.

  • In the near future a variable wind will be allowed and an interface within the SMS will be provided.

Wave Forcing

Temporally and spatially varying.

  • Wave forcing is generally provided by the user selecting to use the Steering Module within SMS. The mapping of wave data from wave grid to flow grid is automated during the course of the steering process.
  • If a choice is made not to use the steering process, the user must provide several datasets of information which has been mapped to the flow grid geometery.
    • Radiation stress gradient
    • Wave height
    • Wave period
    • Wave direction
    • Wave dissipation

Transport Options

Sediment Transport

Salinity Transport

Other Processes

Bottom Friction

Hard Bottom

Variable D50

Other Features

Parallelization with OpenMP

Both Intel and AMD processors now are shipping chips with multiple cores/processors (henceforth referred to as "processors") available.

Presently (08/4/2009) - To enable use of more than one processor (or more than one thread) in CMS-Flow, the user must specify the corresponding "Card" in the "Advanced" tab in the CMS-Flow model control in SMS 10.1 (unavailable in version SMS 10.0 and earlier):

OPENMP_THREADS <# of threads> This card takes as an argument the number of threads to use for a given application with the following rules:

  1. If more threads are requested than are available, only the maximum on the machine are used.
  2. If hyperthreading is allowed on that chip's architecture, all threads are used, up to the number requested.
 EXAMPLE 1
   Your machine has 8 cores, and you want to start a CMS-Flow run that 5 threads.
   "OPENMP_THREADS <white space> 5" is specified in the Advanced Card section.

Hyperthreading

  • Some of the higher-end chips have a feature called "Hyperthreading" which allows each processor to split further into two "threads" which could further increase throughput of the work that processor performs. For example, on an Intel Extreme Quad-core processor there are 4 cores, but with hyperthreading, there is a possibility of using 8 separate threads.
  • If you know that your computer has hyperthreading, you can actually specify "OPENMP_THREADS 2" and get better performance while still only using one physical processor.
 EXAMPLE 2
   Your machine has 4 Hyperthreading cores, and you want to start a CMS-Flow run that 
   uses 5 threads (leaving 3 threads for other system and user processes).  
   You would enter the card "OPENMP_THREADS <white space> 5" and CMS-Flow would use 5
   threads.

Requesting too many threads

  • If you specify a number that is too large for your particular machine to use, CMS-Flow will use the maximum number of threads available.
 EXAMPLE 3
   Your machine has 2 cores, and you start a CMS-Flow run with the card:  
     "OPENMP_THREADS   3".
   CMS-Flow will realize that your machine has only 2 cores and is not capable of 
   hyperthreading.  The number of processors that will be used is 2.

SMS 10.1+ How-to

The following animation quickly goes through the steps needed to add this capability to a CMS-Flow simulation. Animation