GfsFunction

(Difference between revisions)
 Revision as of 00:14, 21 February 2007Popinet (Talk | contribs)← Previous diff Revision as of 23:26, 2 August 2007203.58.241.190 (Talk) (added bit about comments in C functions)Next diff → Line 27: Line 27: (dx("V") - dy("U")) (dx("V") - dy("U")) + + == More details on C functions == + + Comments should use the C syntax; i.e. opening /* and closing + */ not necessarily on the same line rather than the usual parameter file syntax of a line beginning with a #. This is to allow the use of [http://en.wikipedia.org/wiki/C_preprocessor C preprocessor] directives in C functions in GfsFunctions. + + Example: + * [http://gfs.sourceforge.net/examples/examples/logo/logo.gfs.html Coalescence of a pair of Gaussian vortices (Gerris logo)], in the [[GfsInitVorticity|InitVorticity]] command.

Revision as of 23:26, 2 August 2007

Functions can be used in most objects which require a numerical parameter. A function can be a constant or a piece of C code taking coordinates (x,y,z), time t or any of the domain variables as arguments and returning a floating-point value.

The syntax in parameter files is as follows:

```-1.78e-3
```

or a C function

```{
double a = sin (x + y);
double b = cos (x - z);
double c = sin (M_PI*t);
return a + b + c;
}
```

or a C expression

```40.*(P - 1.)
```

or a GTS file

```myfunction.gts
```

The GTS file must be a planar (preferably Delaunay) triangulation of a set of points. The value of the function at a given (x,y) coordinate is then calculated by computing the z-coordinate of the intersection of a vertical line passing through the point at (x,y,0) with the triangulation defined by the GTS file.

Gradients of variables can be computed using the `dx()`, `dy()` and `dz()` functions. For example, the z-component of the vorticity would be computed as:

```(dx("V") - dy("U"))
```

More details on C functions

Comments should use the C syntax; i.e. opening `/*` and closing `*/` not necessarily on the same line rather than the usual parameter file syntax of a line beginning with a `#`. This is to allow the use of C preprocessor directives in C functions in GfsFunctions.

Example: