You are on page 1of 37

2008 International

ANSYS Conference
Training Manual

Customizing CFX
CFX Command Language (CCL) and
CFX Expression Language (CEL)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

2-1

August 26, 2008


Inventory #002568

CCL and CEL

Methods of customization

Training Manual

CFX can be customized using:


CFX Command Language (CCL)
Including CFX Expression Language (CEL)
Additional variables
User sources

Embedded Perl in CCL


User Fortran
Customised executables produced by ANSYS (modified source
code)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-2

August 26, 2008


Inventory #002568

CCL and CEL

CFX Command Language (CCL)

Training Manual

CCL is the language used to specify the solver


physics, including:

Material properties
Physical models
Boundary conditions
Initialisation
Solver control

A knowledge of CCL is helpful for User Fortran


Many users do not need to use CCL as it is
automatically generated by CFX-Pre
Advanced users will find CCL a time-saving and
powerful feature
CCL is also used by CFX-Pre and CFX-Post
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-3

August 26, 2008


Inventory #002568

CCL and CEL

Why edit CCL?

Training Manual

CCL is normally generated automatically by CFX-Pre,


but may also be edited manually
Useful for trivial changes without starting CFX-Pre
Some advanced solver functionality can only be set up
this way for example:
Some advanced CCL parameters
Certain expert parameters e.g.
EXPERT PARAMETERS:
solve meshdisp = f
END

Advanced users often use CCL to make more complex


changes
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-4

August 26, 2008


Inventory #002568

CCL and CEL

Editing CCL

Training Manual

CCL is contained within the


definition file
Command File (CCL)

The definition file is a binary


file and cannot be edited
directly

Mesh (def and res file)


Definition or
Results file

The CCL editor may be used


to make simple changes

Solution Data
(res file or def file
after solution
interpolation)

More complex changes


require the CCL to be
manually edited

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-5

August 26, 2008


Inventory #002568

CCL and CEL

Editing CCL using cfx5cmds

Training Manual

The cfx5cmds utility is used from the command line as follows:

Read CCL from the definition file:


cfx5cmds -def file1.def -text file1.ccl -read

The CCL may then be edited using a text editor:


Finally, write the modified CCL to the definition file:
cfx5cmds -def file1.def -text file1.ccl -write
file1.def (original)

cfx5cmds -read

file1.def (original)

Editor

file1.ccl (original)

cfx5cmds -write
file1.ccl (modified)
file1.def (modified)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-6

August 26, 2008


Inventory #002568

CCL and CEL

CCL structure and syntax

Training Manual

Comments start with # (inline comments permitted)


\ (backslash) is the continuation character
Organised as a hierarchical structure of CCL objects, which
may contain other objects and parameters
LIBRARY:
MATERIAL: Water at RTP
Option = Pure Substance
PROPERTIES:
Option = General Fluid
Density = 9.98E2 [kg m^-3]
Dynamic Viscosity = 1.E-3 [kg m^-1 s^-1]
Specific Heat Capacity = 4.19E3 [J kg^-1 K^-1]
Thermal Conductivity = 5.91E-1 [W m^-1 K^-1]
Thermal Expansivity = 2.1E-4 [K^-1]
END
END
END

RULES file contains allowed objects and parameters (located


in the etc subdirectory in a CFX installation)
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-7

August 26, 2008


Inventory #002568

CCL and CEL

The -ccl option

Training Manual

This allows CCL to be specified directly to the solver without


modifying the definition file
Example of usage:
cfx5solve -def test.def ccl file1.ccl
Important notes:
The CCL in the definition file is not changed
The CCL specified with the ccl option does not replace the CCL
in the definition file
The specified CCL is merged with the CCL already in the definition
file
Can be used to add or modify but not remove CCL

The resulting CCL used by the solver is given at the top of the
solver output file
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-8

August 26, 2008


Inventory #002568

CCL and CEL

CFX Expression Language (CEL)

Training Manual

CFX Expression Language (CEL) is a subset of CCL


It is important to be comfortable with the syntax and application of
CEL in order to use CFX user CEL functions (user Fortran)
effectively

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-9

August 26, 2008


Inventory #002568

CCL and CEL

CFX Expression Language (CEL)

Training Manual

CEL is an interpreted, declarative language


which enables users to enhance simulations
without recourse to external fortran routines
Many functions which could only be performed
in user Fortran in CFX-4 and CFX-TASCflow can
be performed using CEL
CEL uses mathematical expressions for physical
quantities as opposed to using fixed values
Access is available to many CFX internal
variables (including solution variables)
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-10

August 26, 2008


Inventory #002568

CCL and CEL

CFX Expression Language (CEL)

Training Manual

CEL includes built-in mathematical functions


In CFX-Pre, CEL can be used on any form which has an
Expression Editor button (click in the value field to see this
button)
Since CEL is a subset of CCL, it may also be edited as part
of a CCL file
Examples where CEL may be used:

Variable Material Properties


Complex boundary conditions
Variable initial conditions
User Sources

In CFX-Post (e.g to define user defined variables)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-11

August 26, 2008


Inventory #002568

CCL and CEL

Creating Expressions - constants

Training Manual

Constant value expressions are specified with units. For


example:
x1 = 4.8 [m]
inletspeed = 840.25 [m/s]
Tsource = 353.15 [K]
inletmf = 0.9

If no units are specified, the value is interpreted as


dimensionless ( [ ] is also dimensionless)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-12

August 26, 2008


Inventory #002568

CCL and CEL

Creating Expressions - continued

Training Manual

Expressions are mathematical combinations of predefined


values, system variables, numerical constants, and other
predefined expressions:
area = 0.25*pi*d^2
xc = R*cos(theta)
vel12scaled = scale*sqrt(u^2+v^2)

Expressions may include in-line units:


xoffset = x + 4 [m]
vdot = mdot / 133 [kg m^-3]

The result units of expressions are not declared. They are


the result of units in the expression. The following
expression has units of [kg m^-2 s^-1]
8.0[kg m^-3] * 3.3[m s^-1])

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-13

August 26, 2008


Inventory #002568

CCL and CEL

Rules for Expressions

Training Manual

Variables and expressions are case sensitive


Brackets can be used to specify the order of operations
For multiple line expressions, operators may be used to
separate each line e.g., A+ B/C could be written as:
A+
B
/C

Expressions must be dimensionally consistent e.g:


1.0[mm] + 0.45[yds]
2.5[s m^-1] - (3.0[m s^-1])^-1
1.0[mm] + 0.3[kg]

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

(valid)
(valid)
(invalid)

1-14

August 26, 2008


Inventory #002568

CCL and CEL

System Variables

Training Manual

Only a very small selection is shown, there are many others


Use the right-click menu in the Expression Editor for a
complete list of available variables
Variable

Units

Description

x,y,z

Direction 1, 2 and 3 in Local Coordinate Frame

m s-1

Velocity in the x coordinate direction

kg m-1 s-2

Pressure

ptot

kg m-1 s-2

Total Pressure

mf

dimensionless

Mass Fraction

density

kg m-3

Density

Temperature

viscosity

kg m-1 s-1

Dynamic Viscosity

Cp

m2 s-2 K-1

Specific Heat Capacity at Constant Pressure

cond

kg m s-3 K-1

Thermal Conductivity

ctstep

dimensionless

Current time step

atstep

dimensionless

Accumulated time step

citern

dimensionless

Current iteration number

aitern

dimensionless

Accumulated iteration number

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-15

August 26, 2008


Inventory #002568

CCL and CEL

System Variable Prefixes

Training Manual

In order to distinguish system variables of different


components and fluids, prefixes are used. This is relevant in
multi-phase or multi-component simulations. For example:
Variable

Meaning

pressure

Pressure (no prefix required).

Air.density

Density of Air.

Air.viscosity

Viscosity of Air.

Air.carbondioxide.mf

Mass fraction of carbon dioxide in air (in a multi-component


mixture).

For single-phase, single component simulations, the prefix


can usually be omitted

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-16

August 26, 2008


Inventory #002568

CCL and CEL

Vector & Tensor Components

Training Manual

CEL is a scalar language. To specify the components of


velocity or stress variable use u,v,w postfixes. Velocity itself
is a special case and the short forms u, v, w are valid for the
x, y, z components of the velocity. All other vectors and
tensors use post fixes X,Y,Z.
Variable

Components

Velocity

Velocity u, Velocity v, Velocity w or u,v,w

Reynolds stress

Reynolds Stress uu, Reynolds Stress uv, ..

Normal Vector

Normal Vector X, Normal Vector Y, Normal Vector Z

Note that short name forms use lower case X,Y,Z post fixes.
E.g. Magnetic Induction X or bmag x are identical.
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-17

August 26, 2008


Inventory #002568

CCL and CEL

Variables : Normal Vectors

Training Manual

Normal unit and area vectors can be used in CEL


expressions on 2D regions
A = Normal X *
B = Normal Area X * .

Only supported on 2D region element faces, or


integrations points
Can only be used in expressions on boundaries (e.g:
boundary conditions or boundary sources) or domain
interfaces

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-18

August 26, 2008


Inventory #002568

CCL and CEL

Variables : Coordinate Frames

Training Manual

Local coordinate frame transformations currently only


apply to position variables on RHS of expressions:
x, y, z, r, theta, aaxis, taxis, raxis

If desired, in 11.0 local transformations are applied to


vector and tensor variables (eg: velocity) by setting the
expert parameter
cel global to local = t

Default value is set to false for backwards compatibility


issues

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-19

August 26, 2008


Inventory #002568

CCL and CEL

Variable Operators

Training Manual

Variable operators can be used in CEL expressions


Curl, Gradient, Trnmin, Trnmax, Trnrms, Trnsdv, Trnavg:
A = Pressure.Trnrms * ..
B = Temperature.Trnavg
C = Temperature.Gradient X
Gradients on vertices only available for solved for (principal)
variables plus Temperature, Density and Algebraic AVs
Gradients on vertices require parallel communication

Variable operators cannot be used as arguments to


integrated CEL functions, nor can be monitored/probed at
a point
Workaround: create an algebraic AV, and use it instead
Workaround also works to get at gradients of non-principal
variables
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-20

August 26, 2008


Inventory #002568

CCL and CEL

CEL Built-in constants

Training Manual

Constant

Value

Units

Description

2.7182818

dimensionless

Usual meaning

9.806

m/s2

Acceleration due to gravity

pi

3.1415927

dimensionless

Usual meaning

8314.5

m2/(s2 K)

Universal gas constant

stefan

5.670400E-08

W m-2 K-4

Stefan-Boltzmann constant

boltzmann

1.3806503E-23

J K-1

Boltzmanns constant

planck

6.62606876E-34

Js

Planck Constant

clight

2.99792458E+08

m/s

Speed of light

avogadro

6.02214199E+23

mol-1

Avogadro constant

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-21

August 26, 2008


Inventory #002568

CCL and CEL

CEL operators

Training Manual

Operator

Description

1st operand
dimensions

2nd operand
dimensions

Operand
values

Result
dimensions

-x

Negation (unary)

any

any

[x]

x+y

Addition

any

[x]

any

[x]

x-y

Subtraction

any

[x]

any

[x]

xy

Product

any

any

any

[x]*[y]

x/y

Quotient

any

any

y0

[x]/[y]

X^y

Power

any

[]

Any

[x] [y]

(if y<0 then x must be


non-zero)

(where y is a simple constant integer


expression)

X^y

Power

any

[]

Y>0

[x] [y]

[]

[]

Y>0

[]

(where y is a simple constant expression)

x^y

Power
(where y is not
simple and constant)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-22

August 26, 2008


Inventory #002568

CCL and CEL

CEL Built-in functions

Training Manual

Function

Description

Argument units

Result units

sin(x)

sine

angle

dimensionless

cos(x)

cosine

angle

dimensionless

tan(x)

tangent

angle

dimensionless

asin(x)

sin-1

dimensionless

angle

acos(x)

cos-1

dimensionless

angle

atan(x)

tan-1

dimensionless

angle

atan2(x,y)

tan-1

dimensionless

angle

sinh(x)

hyperbolic sine

angle

dimensionless

cosh(x)

hyperbolic cosine

angle

dimensionless

tanh(x)

hyperbolic tangent

angle

dimensionless

exp(x)

ex

dimensionless

dimensionless

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-23

August 26, 2008


Inventory #002568

CCL and CEL

CEL Built-in functions

Training Manual

Function

Description

Argument units Result units

loge(x)

natural log

dimensionless

dimensionless

ln(x)

(alias for loge function)

log10(x)

log base 10

dimensionless

dimensionless

log(x)

(alias for log10 function)

abs(x)

|x|

any

units of x

sqrt(x)

square root

any

units of x

step(x)

step function

dimensionless

dimensionless

min(x,y)

minimum

any ([x] = [y])

units of x

max(x,y)

maximum

any ([x] = [y])

units of x

int(x)

integer part of x

any

units of x

nint(x)

nearest integer

any

units of x

besselJ(n,x)

bessel function (1st kind)

dimensionless

dimensionless

besselY(n,x)

bessel function (2nd kind)

dimensionless

dimensionless

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-24

August 26, 2008


Inventory #002568

CCL and CEL

Expression Editor

Training Manual

Available from many forms and


from the toolbar:

Interactive tool for developing and


managing expressions within CFXPre
Define, delete, edit and copy values
and expressions
Plot and evaluate expressions

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-25

August 26, 2008


Inventory #002568

CCL and CEL

CEL Example (boundary condition)

Training Manual

Setting a parabolic velocity profile for an inlet boundary:

Right click will bring a lot


of functionalities

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-26

August 26, 2008


Inventory #002568

CCL and CEL

Integrated quantity CEL functions

Training Manual

These allow integrated quantities to be used in CEL expressions


Integrated quantity functions operate on a locator:
min, max, average values of variables over points, areas, volumes
area, volume, force on a boundary
volume and area integrals of variables

These may be calculated over a domain, subdomain or boundary


patch, see following table for valid locations for each quantity.
Defined mesh regions may also be used.
In the Solver, the integrated quantities are evaluated at the start of
each time-step
In a parallel run, data is automatically collated over all partitions
and the required global value returned
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-27

August 26, 2008


Inventory #002568

CCL and CEL

List of integrated quantity CEL functions


Function

Return units

Valid regions
D

Training Manual

Description

area()

area

Total surface area of all faces of specified boundary

area_x(), area_y(),
area_z()

area

Total surface area of all faces of specified boundary projected in


the x, y or z direction

massFlowAve(
)

units of

Mass flow weighted average of on a 2D locator


(non-boundary regions use approximate mass flows)

massFlowAveAbs(
)

units of

Absolute Mass flow weighted average of on a 2D locator


(non-boundary regions use approximate mass flows)

massFlow()

mass flow

Mass flow through faces of specified 2D locator


(non-boundary regions use approximate mass flows)

massFlowInt(
)

units of . area

Mass flow weighted integration of on specified 2D locator


(non-boundary regions use approximate mass flows)

massAve(
)

units of

areaAve(
)

units of

rmsAve(
)

units of

volumeAve(
)

units of

areaInt(
)

units of . area

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

Mass weighted average of

Y
Y

Area weighted average of on a boundary

RMS average of on a boundary or domain


Volume weighted average of on a domain

1-28

Surface area integration of on a boundary

August 26, 2008


Inventory #002568

CCL and CEL

List of integrated quantity CEL functions

Function

Return units

Valid regions
D

Training Manual

Description

ave(
)

units of

Arithmetic average of

sum (
)

units of

Sum of over all domain vertices or boundary faces

minVal (
)

units of

Minimum value of
When is a vector or tensor the minimum magnitude is returned

maxVal (
)

units of

Maximum value of
When is a vector or tensor the maximum magnitude is returned

probe (
)

units of

force()

force

Magnitude of the total force on a 2D locator


(non-boundary regions use approximate forces)

force_x()

force

Total force in the x-direction on boundary faces


(non-boundary regions use approximate forces)

force_y()

force

Total force in the y-direction on a 2D locator


(non-boundary regions use approximate forces)

force_z()

force

Total force in the z-direction on a 2D locator


(non-boundary regions use approximate forces)

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

Cartesian
coordinate

Value of at specified point locator

1-29

August 26, 2008


Inventory #002568

CCL and CEL

List of integrated quantity CEL functions

Function

Return units

Valid regions
D

Training Manual

Description

torque()

torque

Magnitude of the total torque on a 2D locator


(non-boundary regions use approximate torques)

torque_x()

torque

Total torque in the x-direction on a 2D locator


(non-boundary regions use approximate torques)

torque_y()

torque

Total torque in the y-direction on a 2D locator


(non-boundary regions use approximate torques)

torque_z()

torque

Total torque in the z-direction on a 2D locator


(non-boundary regions use approximate torques)

volume()

volume

Total volume of a domain or subdomain

mass()

mass

Total mass within a domain or subdomain

volumeInt (
)

units of . vol

Volume weighted integration of

massInt (
)

units of . mass

Mass weighted integration of

inside()

dimensionless

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-30

Returns 1 if in specified region 0 if not.

August 26, 2008


Inventory #002568

CCL and CEL

Regions for integrated quantities

Training Manual

Non-physics regions are available as locators for integrated


quantities
Non-physics = not used for a BC, subdomain, domain
General syntax: Function(<Variable>)@<Locator>
<Locator> can be a general 2D or 3D region defined during mesh
generation or in CFX Pre

Non-unique named locators can be differentiated using the REGION:


syntax
User defined region or mesh region
massFlow()@REGION: Inlet

Physics boundary
massFlow()@Inlet
REGION syntax does not yet work in CFX Post, which has its own approach for
addressing non-unique names
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-31

August 26, 2008


Inventory #002568

CCL and CEL

Integrated functions + Local Coordinates

Training Manual

Return value of integrated CEL vector functions such as


force(), torque() and area() respect local coordinate
frame definitions
The syntax <_Axis>[_CoordFrame] for those vector
based CEL functions is supported, for example:
torque_x_Coord 1()@REGION: inlet
force_y_My Local CoordFrame()@Wall
area_z_Coord 2()@Inlet

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-32

August 26, 2008


Inventory #002568

CCL and CEL

Examples of using integrated quantity functions

Training Manual

Expression to return the nodal average value of the density


of the fluid called FuelGas in the domain called Tank
rhoMean = ave(FuelGas.density)@Tank

Expression to return the area of the boundary called inlet1


area1 = area()@inlet1

Expression to return the mass flow of the fluid called FuelGas


through the boundary called inlet1
mdotGasIn = FuelGas.massFlow()@inlet1

Expression to return the area of the mesh region called in1


area2 = area()@REGION:in1

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-33

August 26, 2008


Inventory #002568

CCL and CEL

Example: Applying a parabolic inlet profile with CEL

Training Manual

Step with parabolic inlet velocity profile


This is achieved by setting the inlet velocity as a function of
one of the coordinate values:
e.g. umax(1-(y/ymax)2)
A very simple example implemented in CEL

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-34

August 26, 2008


Inventory #002568

CCL and CEL

Example: Applying a parabolic inlet profile with CEL

May easily be set up from


CFX-Pre or by editing the
command language from
an existing definition file
A number of CEL values
and expressions are
defined
The inlet velocity is
specified using a CEL
expression
In a later practical
exercise, this example will
be implemented in user
Fortran
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

Training Manual

LIBRARY:
.. ..
CEL:
EXPRESSIONS:
velmax = 1.0E-03 [m/s]
ymax = 0.05 [m]
ynorm = y/ymax
END
END
END
BOUNDARY: inlet
Boundary Type = INLET
Coord Frame = Coord 0
Location = inlet
BOUNDARY CONDITIONS:
FLOW REGIME:
Option = Subsonic
END
MASS AND MOMENTUM:
Normal Speed = velmax * (1.0 - ynorm^2)
Option = Normal Speed
END
END
END
1-35

August 26, 2008


Inventory #002568

CCL and CEL

User specified sources

Training Manual

User Sources may be specified for any equation


In CFX, sources are in residual mode. This is different
from the level mode implementation in some codes. The
implications of this are:
The source (S
) is set to the actual source value.
Either a source per unit area/volume Source option
Or the total source over the entire location Total Source option

An optional source coefficient may be specified e.g. S/


/
/ or an
approximation to this
The source coefficient has no effect on the converged solution,
but will affect convergence
A positive source coefficient is likely to cause divergence

ANSYS, Inc. Proprietary


2008 ANSYS, Inc. All rights reserved.

1-36

August 26, 2008


Inventory #002568

CCL and CEL

User specified sources

Training Manual

Sources may be specified on subdomains or at a point


location in a domain
Sources may be defined using an expression, which may
include a user CEL function (Fortran)
There are special considerations for sources in a
multiphase simulation:
Fluid specific sources are added to the phase equations
without volume fraction weighting. If required, this must be
included explicitly
Bulk sources are multiplied by the volume fraction

For mass sources:


Values may be specified for incoming variables
If values are not specified, then the solution values are used
ANSYS, Inc. Proprietary
2008 ANSYS, Inc. All rights reserved.

1-37

August 26, 2008


Inventory #002568

You might also like