FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

scotchDecomp.C File Reference


Detailed Description

From scotch forum:

By: Francois PELLEGRINI RE: Graph mapping 'strategy' string [ reply ] 2008-08-22 10:09 Strategy handling in Scotch is a bit tricky. In order not to be confused, you must have a clear view of how they are built. Here are some rules:

1- Strategies are made up of "methods" which are combined by means of "operators".

2- A method is of the form "m{param=value,param=value,...}", where "m" is a single character (this is your first error: "f" is a method name, not a parameter name).

3- There exist different sort of strategies : bipartitioning strategies, mapping strategies, ordering strategies, which cannot be mixed. For instance, you cannot build a bipartitioning strategy and feed it to a mapping method (this is your second error).

To use the "mapCompute" routine, you must create a mapping strategy, not a bipartitioning one, and so use stratGraphMap() and not stratGraphBipart(). Your mapping strategy should however be based on the "recursive bipartitioning" method ("b"). For instance, a simple (and hence not very efficient) mapping strategy can be :

"b{sep=f}"

which computes mappings with the recursive bipartitioning method "b", this latter using the Fiduccia-Mattheyses method "f" to compute its separators.

If you want an exact partition (see your previous post), try "b{sep=fx}".

However, these strategies are not the most efficient, as they do not make use of the multi-level framework.

To use the multi-level framework, try for instance:

"b{sep=m{vert=100,low=h,asc=f}x}"

The current default mapping strategy in Scotch can be seen by using the "-vs" option of program gmap. It is, to date:

b { job=t, map=t, poli=S, sep= ( m { asc=b { bnd=d{pass=40,dif=1,rem=1}f{move=80,pass=-1,bal=0.005}, org=f{move=80,pass=-1,bal=0.005}, width=3 }, low=h{pass=10}f{move=80,pass=-1,bal=0.0005}, type=h, vert=80, rat=0.8 } | m { asc=b { bnd=d{pass=40,dif=1,rem=1}f{move=80,pass=-1,bal=0.005}, org=f{move=80,pass=-1,bal=0.005}, width=3 }, low=h{pass=10}f{move=80,pass=-1,bal=0.0005}, type=h, vert=80, rat=0.8 } ) }

Definition in file scotchDecomp.C.

#include "src/decompositionMethods/scotchDecomp/scotchDecomp.H"
#include "src/OpenFOAM/db/runTimeSelection/addToRunTimeSelectionTable.H"
#include "src/OpenFOAM/primitives/Scalar/floatScalar/floatScalar.H"
#include "src/OpenFOAM/db/Time/Time.H"
#include "src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H"
#include "src/OpenFOAM/db/IOstreams/Fstreams/OFstream.H"
#include "scotch.h"
Include dependency graph for scotchDecomp.C:

Go to the source code of this file.

Namespaces

namespace  Foam
 

Namespace for OpenFOAM.


Functions

 defineTypeNameAndDebug (scotchDecomp, 0)
 addToRunTimeSelectionTable (decompositionMethod, scotchDecomp, dictionaryMesh)