**function#

Description#

This command modifies nodal positions according to the given function. These functions are as described in the chapter on functions and scripting. Function transforms can be applied to the whole structure (default), to nset(s), and to the nodes of an elset or elsets.

Syntax#

**function \(~\,\) *func func(x,y,z); \(~\,\) *xtrans func(x,y,z); \(~\,\) *ytrans func(x,y,z); \(~\,\) *ztrans func(x,y,z); \(~\,\) *nset nset1  …  nsetN \(~\,\) *elset elset1  …  elsetN

*func

used for function definitions which are henceforth available. One can use a “learn” command line option as well to specify an external file with function definitions.

Note

This command can be specified by a string starting with *func, e.g. *function_def is used in some tests as shown in the example below.

*xtrans *ytrans *ztrans

functions which specify a coordinate reassignment in \(x\), \(y\), or \(z\) directions. Note that these are absolute values (trans stands for transform, not translate), so an actual translation of 0.40 in the \(z\) direction would use *ztrans z-0.40;

*nset

specify nset(s) for the function to be applied to.

*elset

specify elset(s) for the function to be applied to.

Example#

The following are the function statements from the example $Z7PATH/test/Mesher_test/INP/func-xform.inp

../../_images/func-xform1.fig.svg
 **function
   *elset pipe1
   *function_def R:= 6.366197722 + z;
   *function_def theta:=y/6.366197722;
   *function_def Z:=R(z)*cos(theta(y))-6.366197722;
   *function_def Y:=R(z)*sin(theta(y));
   *ztrans Z(y,z);
   *ytrans Y(y,z);
...
 **function
   *elset weld
   *elset pipe2
   *function_def f1:= (z>=1.0)*1.0 + (z<1.0)*(z>0.0)*z + (z<=0.0)*0.0;
   *function_def f2:= (z>=0.2)*1.0 + (z<0.2)*(z>0.0)*(z*z/0.04);
   *ztrans f1(z)*z   + (1.-f1(z))*Z(y,z);
   *ytrans f2(z)*y   + (1.-f2(z))*Y(y,z);