0% found this document useful (0 votes)
558 views

Cfd-Geom v2014.0 User Manual

geom

Uploaded by

Yousaf Saidalavi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
558 views

Cfd-Geom v2014.0 User Manual

geom

Uploaded by

Yousaf Saidalavi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 539

CFD-GEOM V2014.

0
User Manual
©1997-2014 by ESI-Group
This ESI Group documentation is the confidential and proprietary product of ESI-Group, Inc. Any unauthorized use, reproduction, or transfer of
this manual is strictly prohibited. This documentation is subject to limited distribution and restricted disclosure.
CFD-ACE™, CFD-ACE+™, CFD-CADalyzer™, CFD-VIEW™, CFD-GEOM™, SimManager™, CFD-TOPO™, CFD-VisCART™, CFD-Micromesh™ and CFD-
FASTRAN™ are registered trademarks of ESI-Group.
Portions of this product are owned by third-party software vendors.
Revision Information
The information in this guide applies to all current ESI CFD products until superseded by a newer version of this guide.
Published July 2014
UA/CFD_/14/08/00/A
Disclaimers
The documents and related know-how herein provided by ESI Group subject to contractual conditions are to remain confidential. The CLIENT
shall not disclose the documentation and/or related know-how in whole or in part to any third party without the prior written permission of ESI
Group.
About ESI GROUP
ESI provides a world leading software editor for the numerical simulation of prototype and manufacturing process engineering in applied
mechanics. The key to ESI's success is the use of realistic material physics, providing "as good as real" virtual solutions, in order to replace the
lengthy trial and error processes on real prototypes.
ESI has developed an extensive suite of coherent, industry-oriented applications to realistically simulate a product’s behavior during testing and
real life use; to refine manufacturing processes for desired product performance, and to evaluate the effect of the environment in which the
product is deployed.
ESI’s products represent a unique collaborative and open environment for End-to-End Virtual Prototyping, thus eliminating the need for
physical prototypes during product development. This solution allows a productivity gain, innovation acceleration and significantly reduced
costs.
For more information about ESI Group, visit www.esi-group.com.
About ESI CFD
ESI CFD is a technology leader in the field of advanced computational fluid dynamics simulation software backed by more than 20 years of
research-based knowledge throughout a wide range of industries. ESI CFD’s broad range of products and services provide all of the necessary
tools for advanced multiphysics analysis in a virtual prototype environment, significantly reducing time and expense through comprehensive
up-front modeling and simulation. Key focus areas include aerospace, automotive, biomedical, fuel cells, MEMS, microfluidics, plasma, and
semiconductor.
Contact Information for ESI CFD
ESI CFD, Inc.
6767 Old Madison Pike, Ste. 600
Huntsville, AL 35806
Phone: (256) 713-4700
Fax: (256) 713-4799
Software Support: [email protected]
Software Sales: [email protected]
Table Of Contents
Chapter 1. CFD-GEOM Overview .................................................................................................................... 1
ESI Group Around the World .....................................................................................................................................1
Customer Support .....................................................................................................................................................2
CFD-GEOM Features ..................................................................................................................................................5
File Types ...................................................................................................................................................................6

Chapter 2. User Interface ............................................................................................................................... 9


Introduction to CFD-GEOM .......................................................................................................................................9
GUI ...........................................................................................................................................................................10
Geometry Module ...................................................................................................................................................12
Grid Generation Module .........................................................................................................................................13
Introduction to CFD-GEOM .....................................................................................................................................14
GUI ...........................................................................................................................................................................16
Geometry Module ...................................................................................................................................................18
Grid Generation Module .........................................................................................................................................19

Chapter 3. Menu Bar .................................................................................................................................... 21


Introduction to the Menu Bar .................................................................................................................................21

Chapter 4. Toolbars ...................................................................................................................................... 61


Overview .................................................................................................................................................................61
Standard Toolbar .....................................................................................................................................................62
Color Toolbar ...........................................................................................................................................................65
Model Toolbar .........................................................................................................................................................66
Rendering Toolbar ...................................................................................................................................................67
Script Toolbar ..........................................................................................................................................................68
Custom Toolbar Introduction ..................................................................................................................................69

Chapter 5. Graphics Area .............................................................................................................................. 71


Graphics Area Introduction .....................................................................................................................................71
Using Viewer Windows ...........................................................................................................................................72
Query Menus ...........................................................................................................................................................73
Hot Keys ..................................................................................................................................................................74

Chapter 6. Entity Bar .................................................................................................................................... 79


Overview .................................................................................................................................................................79
Entity Blanking, Unblanking, and Picking ................................................................................................................79
Snap Button .............................................................................................................................................................81
Point Coordinates ....................................................................................................................................................81

Chapter 7. Model Manager .......................................................................................................................... 83


Model Manager Overview .......................................................................................................................................83

Chapter 8. Geometry Tab ............................................................................................................................. 93


Geometry Tab Introduction.....................................................................................................................................93
Additional ToolTips ..................................................................................................................................................94
Point Creation Tools ................................................................................................................................................95
Line Creation Tools ................................................................................................................................................104
Conic Creation Tools ..............................................................................................................................................114
Curve Creation Tools .............................................................................................................................................121

v
CFD-GEOM V2014.0 User Manual

Surface Creation Tools ..........................................................................................................................................133


Surface Modification Tools ....................................................................................................................................153
Model Repair Tools ...............................................................................................................................................163
Wireframe/Solid Creation Tools ............................................................................................................................166
Transform/Duplicate Entities ................................................................................................................................189
Splitting/Joining Tools ...........................................................................................................................................202
Intersection Tools ..................................................................................................................................................209
Discrete Surface Modeling Tools ...........................................................................................................................213
Miscellaneous Tools ..............................................................................................................................................229

Chapter 9. Mesh Tab .................................................................................................................................. 239


Mesh Tab ...............................................................................................................................................................239
Structured Edge Options .......................................................................................................................................242
Structured Face Options ........................................................................................................................................258
Unstructured Meshing Options .............................................................................................................................273
General Volume Grid Sweeping Options ...............................................................................................................298
Structured and Semi-Structured Domain Options ................................................................................................307
Cartesian Meshing Options ...................................................................................................................................318
Filament Options ...................................................................................................................................................340
Mesh Query Options .............................................................................................................................................344

Chapter 10. BC/VC Tab ................................................................................................................................. 349


BC/VC Editor ..........................................................................................................................................................349
BC/VC Editor User Configuration...........................................................................................................................349
Boundary Condition Editor ....................................................................................................................................350
Volume Condition Editor .......................................................................................................................................353
BC/VC Queries .......................................................................................................................................................355

Chapter 11. CFD-GEOM Scripting .................................................................................................................. 357


Introduction to CFD-GEOM Scripting ....................................................................................................................357
Scripting Toolbar ...................................................................................................................................................368
Reload Script .........................................................................................................................................................368
Launch Editor.........................................................................................................................................................368
Halt Script ..............................................................................................................................................................368
Execute Macro .......................................................................................................................................................368
Geometric Scripting Functions ..............................................................................................................................369
Mesh Scripting Functions ......................................................................................................................................432
FileIO Scripting Functions ......................................................................................................................................486
BCVC Scripting Functions.......................................................................................................................................495
Utility Scripting Functions .....................................................................................................................................500
Visualization Scripting Functions ...........................................................................................................................507
Form Scripting Functions .......................................................................................................................................508

Chapter 12. Frequently Asked Questions...................................................................................................... 513

Appendix A IBC File Format .......................................................................................................................... 515

Appendix B Data .......................................................................................................................................... 517

Appendix C Formats ..................................................................................................................................... 519


Grid File Formats ...................................................................................................................................................519
PLOT3D Data Format .............................................................................................................................................520
Unstructured FAST Data Format ...........................................................................................................................523

vi
Table Of Contents

NASTRAN Mixed Element Format .........................................................................................................................526


PATRAN Mixed Element Format............................................................................................................................526

Appendix D CFD-GEOM Tabulated Data ....................................................................................................... 527


Example .................................................................................................................................................................527

Appendix E Sample Python Scripts ............................................................................................................... 529


3D NACA Airfoil Definition with Multiple Cross Sections ......................................................................................529
Invoke 3D airfoil with 3 cross sections ..................................................................................................................529
Multiple NACA 2D Airfoils - Create Unstructured Grid Around Multiple Airfoils ..................................................530

vii
Chapter 1. CFD-GEOM Overview

ESI Group Around the World


ESI Group employs many high-level specialists worldwide. Headquartered in Paris, France, the company and its
global network of agents provide sales and technical support to customers in more than 30 countries. The
following figure shows some of our locations. Please visit www.esi-group.com for more locations and information.

ESI Group Locations Around the World

ESI Group Headquarters ESI Group Rungis


100-102 Avenue de Suffren Parc d'Affaires SILIC
75015 Paris 99 rue des Solets
FRANCE BP 80112
94513 Rungis cedex
Phone: +33 (0)1 53 65 14 14 FRANCE
Fax: +33 (0)1 53 65 14 12
Phone: +33 (0)1 41 73 58 00
Fax: +33 (0)1 46 87 72 02

1
CFD-GEOM V2014.0 User Manual

Customer Support
ESI-CFD provides excellent customer support, with staff spread around the globe. Please call on us if you have any
questions about the use of your software or modeling applications.

Web site http://www.esi-cfd.com (CFD Portal)


http://www.esi-group.com (Corporate)

Software support [email protected]


File attachments up to 10 MB allowed.

ftp site ftp.esi-cfd.com


Use to upload files larger than 10 MB.

Contacts USA – Huntsville +1 (256) 713-4750

USA – San Jose +1 (408) 824-1212

USA – Detroit +1 (248) 381-8040

United Kingdom +44 (0) 1543 397 900

France +33 (0)1 41 73 59 42

Germany +49 201 125 072 14

Italy +39 05163335577

Israel +972 77 500 5864

India – Pune +91 20 2689 8172

India – Bangalore +91 80 4017 4709

China +86 (10) 65544907/8/9/10

Japan +81 045 682 7070


+81 03 6381 8496

Korea +82 02 3660 4500/4516


+82 31 737 2987

Australia +61 2 8571 0800

Go ToMeeting
http://www.gotomeeting.com / http://www.joingotomeeting.com

An e-mail invitation is usually issued, but you can look for the meeting here.

Community Forum
http://www.esi-cfd.com/component/option,com_smf/Itemid,188/

2
CFD-GEOM Overview

Used for consulting types of questions (for example, How can I do this?, Have you ever
done this?, Does anybody have an example of that?, and so forth).

Only registered members are allowed to access this section, so you will need to log in or
register for an account with Community Forums.

Getting support from the Help menu


From the menu bar, click Help. You can then opt to open the help file, go to the ESI software home page, or view
information about the application you are running. The About submenu opens a splash screen that shows version
numbers for the application itself, libraries, and build platform as well as the build date and copyright information.

How to report problems


If the Help submenus do not answer your questions or address your concerns, you may contact ESI Support at
[email protected]. File attachments are limited to 10 MB via email. For larger files, use our ftp site
(ftp.esi-cfd.com).

When you report a problem please include the following information:

• Platform information
• Product/Application version number
• Modules/Features you were using
• Type of problem you were working on
• Any error messages that you may have received in the output/log files or on the screen.
• Applicable files (GGD, VGD, DTF, output files, etc. - put larger files on the ftp site)
• Precise description of how you observed the problem
• Instructions on how Support can reproduce the problem

Transferring files via ftp


ESI’s ftp site can handle large files, so do not be concerned about the size of DTF files that you upload.

Use your favorite ftp client or web browser to upload files to our ftp site, ftp://ftp.esi-cfd.com. The login name and
password for the public account on the ftp site is listed in the Knowledge Base section of the CFD Portal.

Customers who prefer to use a web browser with drag-and-drop functionality should use the following syntax:
ftp://username:[email protected]/pub

After you have accessed ftp.esi-cfd.com, you can create a directory for your files under the pub subdirectory. In
your email to Support, inform Support where the uploaded files are located.

Security concerns when using ftp


If you are concerned about protecting proprietary data, please be aware of the following:

3
CFD-GEOM V2014.0 User Manual

• You can choose to send output files, log files or scripts instead of GGD, VGD, DTF, etc. files. Also, in case of
DTF files, you can choose to send only the output of the view data command:

• % DTF -vd model.DTF

This prints only the simulation data contained in the DTF file. There is no geometry or boundary condition
information printed. Support can resolve many problems just by looking at the simulation data settings.

• It is ESI Group policy to handle all customer data as confidential, even if a Non-Disclosure Agreement has
not been executed.

• ESI Group will sign a Non-Disclosure Agreement upon request. Contact your sales agent or Distributor to
discuss this option.

• Customer Support can set up password-protected ftp accounts on the ftp site so that no other users can
see your directory or files on the ftp server. No one but you and Support will know you are putting files on
the ftp server. Ask Support if you wish to have a password-protected ftp account.

• Support may be able to help you using GoToMeeting. GoToMeeting enables an on-line meeting where ESI
CFD Support Engineers can see your desktop, including your DTF file, and see the problems you are having
without the need for you to transfer any files off of your computer. GoToMeeting can allow the remote
party (Support) to take control of the mouse and drive the session, but this does not happen by default
(you would have to give permission). Please request a GoToMeeting session with Support if you feel this is
the best way to resolve your problem.

• You can often create a simplified model that represents your real model, but has different boundary
condition values and a different geometry. Sometimes in the process of creating a simplified model to
send to Support, you may discover that the simplified model works fine, and this additional information is
often enough to identify the root cause of the problem.

How to determine your platform


If you have properly installed the ESI CFD software and configured your environment, you should be able to open a
command-line shell. At the prompt, type the following text. (The subsequent output should be sufficient for
Support to know what platform you are actually running.)

% python2.4_cfd
>>> import platform
>>> print platform.platform()
>>> print platform.architecture()
<Ctrl-Z> to end the session (Ctrl-D on Unix/Linux)

In addition, you should provide information about which software package you downloaded. If you are on a Unix
or Linux system, or you can run Cygwin under Windows, you can get the canonical platform name by running this
script:

% getCanonical.sh

If ESI_HOME is set correctly and $ESI_HOME/UTILS_2007/bin is first in your PATH, both these commands will be
found. Windows users without Cygwin can send the output from the Python commands; that is sufficient.

4
CFD-GEOM Overview

Windows users may first need to set PYTHONHOME so that the interpreter finds its required library files. Do this
either under Settings/Control Panel/System/Advanced/Environment Variables, or from a DOS shell:

% set PYTHONHOME="%ESI_HOME%\UTILS_2007\Python2.4_CFD"

How to determine the product/application version number


1. Launch the product/application (CFD-GEOM, CFD-ACE-GUI, etc.)

2. Click the Help menu.

3. Click About <application name> (for example, About CFD-ACE-GUI).

4. Make a note of the version number.

-or-

1. Open a command prompt.

2. On the command line, enter, for example, CFD-ACE-GUI -v and press Enter. This command is case
sensitive and includes a space before –v. A file (CFD-ACE-GUI.version in this case) is created, in the current
working directory, which contains the build date and version information.

CFD-GEOM Features

EXTENSIVE GEOMETRY CONSTRUCTION


• Trimmed NURBS library supporting a wide array of CAD creation capabilities including geometric intersections
(surface-surface, curve-curve, and surface-curve)
• Geometry database supporting CAD creation and geometry import via IGES
• Automatic database updating of all geometry manipulations
• Automatic reconstruction of watertight solid model information from IGES and external surface grid input

VERSATILE GRID GENERATION


• Structured grid generation system fully supporting all 2D and 3D topologies
• Various TFI schemes for surface and volume grid generation including enforced orthogonality and smoothing
algorithms
• Face grid projection to an arbitrary set of NURBS surfaces
• An automatic and controllable surface triangulation algorithm gridding directly on trimmed NURBS surface
sets
• Capability to match triangulations at the boundaries of connected surface sets
• Automatic and controllable volume tetrahedral/pyramid mesher
• Automatic and controllable prismatic grid generation

FLEXIBLE CAPABILITIES TO MIX AND MATCH GEOMETRY AND/OR GRIDS


• Prism grid generation from surface triangulations
• Arbitrary mixing and matching of multi-block structured, unstructured, and semi-structured domains for
mixed element hybrid systems

5
CFD-GEOM V2014.0 User Manual

• Several models can be open at the same time. Parts or entire models can be copied to other models while
automatically filtering duplicate entities
• Capability to mix and match geometries and grids from different models with automatic database updating

EXTENDABLE OUTPUT FOR GEOMETRY, GRIDS, AND BOUNDARY CONDITION INFORMATION


• Supports Plot3D, FAST, NASTRAN, PATRAN, and ESI CFD Data Transfer Facility format (DTF)
• Offers user-configurable boundary condition definitions for any flow solver
• Boundary and volume conditions set on structured and unstructured entities

File Types
CFD-GEOM opens, imports, and saves the file types listed below. To open a particular file type, click the button in
the File Type section. Some of the file types require you to provide additional information.

When you select the DTF file type, the Read GGD file option becomes available. The Read GGD file option reads a
GGD file, opens the DTF file and all 2D unstructured grids, and attaches to their corresponding origins (surfaces,
faces, etc.). DTF files that are gzipped can be read using the Read gzipped file option. However, this option is
available for Unix platforms only.

When you select the PLOT3D File Type option for output, you must indicate whether the file is a formatted,
unformatted, or binary grid file. You can specify if the file is double precision and contains blanking information.
The PLOT3D File Type option also has the Read IBC file option. The IBC file specifies the locations of block
interfaces, boundary conditions, and volume conditions for the output grid. It includes entity locator information (a
unique key) for the CFD-GEOM database. CFD-ACE and other flow solvers may use this file for flow solution set up
purposes. A description of the other file types read by CFD-GEOM is given in the following table.

File Type Description


GGD A GGD (Geometry and Grid Definition) file is a file that has been generated in CFD-GEOM. All
geometry, topology and grid data available within the current level is stored in this file in an ASCII
format. A GGD file can be read only if the current model has no entities in it. If you would like to
concatenate multiple GGD files, you must read them into separate models and then merge the
layers.

IGES An externally defined geometry that is compatible with the IGES 5.3 standard during import but
CFD-GEOM currently only exports up to the IGES 5.1 standard.

SAT Standard ACIS text. A solid modeling format defined by Spatial (www.spatial.com) and supported
by many CAD systems. SAT files typically contain solid bodies or parts. When read into CFD-
GEOM, these parts are converted to unstructured domains, which can then be immediately
meshed with triangular and tetrahedral elements. The underlying geometry may also be used as
the basis for structured grid systems. CFD-GEOM can currently read and write (with some
limitations) SAT versions 16 and earlier.

DTF Files stored in DTF (Data Transfer Facility) format. This is the standard grid format used for ESI
CFD software.

DXF DXF is the AUTOCAD geometry format; CFD-GEOM converts all recognized 2D entities to their
equivalent CFD-GEOM representation. The POLYLINE and SPLINE entities are not currently
supported. The majority of 3D DXF entities are in a proprietary format and are not supported.
However, the 3DFACE entity is recognized and converted to a discrete surface representation
within CFD-GEOM.

6
CFD-GEOM Overview

File Type Description


TAB Tabulated XYZ data that complies with the format.

Python Python-based CFD-GEOM script language.

FAST-U Triangular or tetrahedral grids.

NASTRAN An externally defined grid with the following directives:


• Coordinate systems with CORD2C, CORD2R, And CORD2S
• Nodes with GRID
• Cells with CTRIA3, CQUAD4, CTETRA, CHEXA, AND CPENTA

PATRAN Externally defined grid defined as follows:


• Summary data (26)
• Node data (1)
• Cell data (2) - tri, quad, tet, wedge/prism and hex
• Boundary condition data (6)

Plot3D Structured grid data.

STL STL (stereo-lithography) data sets. ASCII and binary STL files are also supported.

Pro/E Read only

Catia V4 Read only

Catia V5 Read only and only the Windows platform

Step Read and write

Parasolid Read and write

7
Chapter 2. User Interface

Introduction to CFD-GEOM
This section describes the CFD-GEOM GUI and its two integrated modules: Geometry Module and Grid Generation
Module.

CFD-GEOM Opening Window


The CFD-GEOM opening window, shown here, allows you to create a new model or open an existing model. You
can quickly retrieve a recent model by clicking the file name of the appropriate file. If too many files are listed, click
Clear Recent Files to re-set the list of files. From this window you can also access information about the version of
CFD-GEOM you are running (About), open the help file (Help), and go to the ESI Group web site (ESI).

9
CFD-GEOM V2014.0 User Manual

GUI
The CFD-GEOM GUI includes the areas listed in the following table. An annotated screen capture of the GUI itself
follows to help you associate the areas in the table with the areas on the GUI..

Area Description
Title Bar displays the application name (CFD-GEOM) as well as the full file path for the
active model. It also displays the application window minimize, maximize, and
close buttons.

Menu Bar displays the most often-used menu options. Each menu lists a "family” of
selections, and each selection performs a specific action. It also displays the
viewer window minimize, maximize, and close buttons.

Toolbar contains buttons that are used as shortcuts to the same items that are
accessible from the Menu Bar. The most frequently used functions are
grouped together as meaningful, related buttons.

Rendering Toolbar contains buttons that control the display characteristics of surface, face grids,
unstructured surface grids,volume cut plane grids, point display on edges and
exposed boundaries for surfaces.

Graphics Area displays an area where you view, import, select, add, change, and delete
entities. You can click on the area of the window to navigate to that section.

Entity Bar controls blanking and picking options for objects that appear in the graphics
area. Click an area of the entity bar to navigate to that section.

Control Panel contains a type of toolbox for manipulating objects in the graphics area. It has
three main tabs: Geometry, Grid, and BC/VC editor. Each of these tabs has
related buttons that further manipulate and refine objects. Click an area of
the window to navigate to that section.

Information Bar shows the current geometric Precision value, level, and number of cells. You
can change the level by clicking the down arrow and selecting another level
type. The active level appears in the Level field. Change the active level by
clicking the arrow in the Level field and choosing another option.

Status Bar displays informative messages, prompts you through multi-step operations,
shows a progress bar when reading or saving files, and displays a brief
description of an item when you place the cursor over a button, menu, or
other control

10
User Interface

CFD-GEOM Graphical User Interface

Integrated Modules
Full integration of the various modules is a very important feature; for example, it allows you to modify the
geometry and automatically update the entire model, including the grid, instantaneously. A conceptual overview
of the CFD-GEOM software structure is shown below.

11
CFD-GEOM V2014.0 User Manual

Conceptual Overview of CFD-GEOM

Geometry Module
The Geometry Module enables you to define the geometry or modify the geometry read through IGES or Plot3D
data formats. Several features automatically clean models whose data is read via IGES and Plot3D and
automatically recreate grids whose data is read via Plot3D.

NURBS
The geometry module is based on Non-Uniform Rational B-Splines (NURBS) geometric primitives only. All imported
IGES files that contain primitives other than NURBS are automatically converted to NURBS. This limits the number
of interpolation, intersection, and grid generation routines that need to be developed, while not restricting
geometric modeling capabilities. During geometry creation and IGES import, duplication of geometry is
automatically prevented.

Geometric Modeling Capabilities


CFD-GEOM provides the following geometric modeling capabilities:

• Full implementation of 3D geometries including points, lines, arcs, circles, point interpolating curves and
splines, and surfaces
• Wireframe and surface modeling supported with primitives
• In the case of wireframe modeling, transfinite interpolants of boundary curves provide the basis for the
structured grid generation process which defines surfaces.
• In the case of surface modeling, unstructured or structured grid generation is directly performed on the
NURBS surface.

Other capabilities include the following:

• Splitting geometries at any arbitrary point


• Extruding a geometry along a vector

12
User Interface

• Revolving a geometry around an arbitrary axis


• Performing a curve-curve or surface-surface intersection
• Translating, rotating, scaling, mirroring, and projecting geometries

CFD-GEOM performs certain functions, such as duplicating and translating, duplicating and rotating, and scaling, on
any entity including structured and unstructured grid entities (not just geometry) and automatically and
instantaneously updates all data structures.

Grid Generation Module


The Grid Generation Module enables you to create structured or unstructured grids.

Structured Grid Generation


The structured grid generation is based on transfinite interpolation (TFI) methodology. The module supports
uniform, exponential, geometric, and hyperbolic tangent grid point distribution along edges. Grid generation on
NURBS curves is done directly on the curves themselves. Grid generation on NURBS surfaces is completed by
projecting an approximate TFI grid directly onto the NURBS mathematical representation of the surface, or by
computing the TFI grid in the parametric space of the surface.

An important step between geometry modeling and grid generation is the definition of the topology. CFD-GEOM
uses a bottom-up approach in labeling geometry elements as edges, faces, and blocks.

Edge In structured grid generation, an edge forms the basic element for both surface and volume grid
generation. An edge is comprised of one or more connecting geometry elements, i.e., lines and
curves, having n grid points and n-1 line segments connecting those grid points. A user-specified
collection of connected edges forms an edge set. Be aware that grid points along an edge (edge grid
points) are different from the points created using geometry creation tools (geometric points),
though their coordinate values may be the same.
Face Four user-specified edge sets (fewer for degenerate topologies) form a face, the basic construct for
surface grid generation. A face is a surface discretisation created by either TFI from the edge sets or
by TFI from a previously created NURBS surface. A user-specified collection of one or more faces can
be combined to form a face set.
Block Six face sets (fewer for degenerate topologies) combine to form a block, the basic construct for
volume grid generation. A block is a volume discretisation created from face sets that form its
boundaries. In some cases it is possible to combine two or more grid blocks into a single grid block,
resulting in a composite block. The TFI grid lines of each member block are preserved within the
composite block.

The final result of defining a topology is a collection of one or more blocks that form a single or multi-domain grid.
Both 2D and 3D multi-block structured grids can be created and are fully supported within CFD-GEOM.

13
CFD-GEOM V2014.0 User Manual

Unstructured Grid Generation


Because 2D and 3D unstructured grids are composed of different entities, different topological requirements exist
for unstructured grid generation than for structured grid generation. Unstructured grids are created within
unstructured domains. (Unstructured domain refers to user-defined solid regions defined from sets of surfaces
grouped into shells) In 3D, the unstructured domain consists of one or more shells.

Shell consists of a set of connected surfaces or faces. The surfaces or faces that create a shell must create
a water tight volume, i.e. there can be no gaps or cracks in order to create the shell.

Introduction to CFD-GEOM
This section describes the CFD-GEOM GUI and its two integrated modules: Geometry Module and Grid Generation
Module.

CFD-GEOM Opening Window


The CFD-GEOM opening window, shown here, allows you to create a new model or open an existing model. You
can quickly retrieve a recent model by clicking the file name of the appropriate file. If too many files are listed, click
Clear Recent Files to re-set the list of files. From this window you can also access information about the version of
CFD-GEOM you are running (About), open the help file (Help), and go to the ESI Group web site (ESI).

14
User Interface

15
CFD-GEOM V2014.0 User Manual

GUI
The CFD-GEOM GUI includes the areas listed in the following table. An annotated screen capture of the GUI itself
follows to help you associate the areas in the table with the areas on the GUI..

Area Description
Title Bar displays the application name (CFD-GEOM) as well as the full file path for the
active model. It also displays the application window minimize, maximize, and
close buttons.

Menu Bar displays the most often-used menu options. Each menu lists a "family” of
selections, and each selection performs a specific action. It also displays the
viewer window minimize, maximize, and close buttons.

Toolbar contains buttons that are used as shortcuts to the same items that are
accessible from the Menu Bar. The most frequently used functions are
grouped together as meaningful, related buttons.

Rendering Toolbar contains buttons that control the display characteristics of surface, face grids,
unstructured surface grids,volume cut plane grids, point display on edges and
exposed boundaries for surfaces.

Graphics Area displays an area where you view, import, select, add, change, and delete
entities. You can click on the area of the window to navigate to that section.

Entity Bar controls blanking and picking options for objects that appear in the graphics
area. Click an area of the entity bar to navigate to that section.

Control Panel contains a type of toolbox for manipulating objects in the graphics area. It has
three main tabs: Geometry, Grid, and BC/VC editor. Each of these tabs has
related buttons that further manipulate and refine objects. Click an area of
the window to navigate to that section.

Information Bar shows the current geometric Precision value, level, and number of cells. You
can change the level by clicking the down arrow and selecting another level
type. The active level appears in the Level field. Change the active level by
clicking the arrow in the Level field and choosing another option.

Status Bar displays informative messages, prompts you through multi-step operations,
shows a progress bar when reading or saving files, and displays a brief
description of an item when you place the cursor over a button, menu, or
other control

16
User Interface

CFD-GEOM Graphical User Interface

17
CFD-GEOM V2014.0 User Manual

Integrated Modules
Full integration of the various modules is a very important feature; for example, it allows you to modify the
geometry and automatically update the entire model, including the grid, instantaneously. A conceptual overview
of the CFD-GEOM software structure is shown below.

Conceptual Overview of CFD-GEOM

Geometry Module
The Geometry Module enables you to define the geometry or modify the geometry read through IGES or Plot3D
data formats. Several features automatically clean models whose data is read via IGES and Plot3D and
automatically recreate grids whose data is read via Plot3D.

NURBS
The geometry module is based on Non-Uniform Rational B-Splines (NURBS) geometric primitives only. All imported
IGES files that contain primitives other than NURBS are automatically converted to NURBS. This limits the number
of interpolation, intersection, and grid generation routines that need to be developed, while not restricting
geometric modeling capabilities. During geometry creation and IGES import, duplication of geometry is
automatically prevented.

Geometric Modeling Capabilities


CFD-GEOM provides the following geometric modeling capabilities:

• Full implementation of 3D geometries including points, lines, arcs, circles, point interpolating curves and
splines, and surfaces
• Wireframe and surface modeling supported with primitives
• In the case of wireframe modeling, transfinite interpolants of boundary curves provide the basis for the
structured grid generation process which defines surfaces.
• In the case of surface modeling, unstructured or structured grid generation is directly performed on the
NURBS surface.

18
User Interface

Other capabilities include the following:

• Splitting geometries at any arbitrary point


• Extruding a geometry along a vector
• Revolving a geometry around an arbitrary axis
• Performing a curve-curve or surface-surface intersection
• Translating, rotating, scaling, mirroring, and projecting geometries

CFD-GEOM performs certain functions, such as duplicating and translating, duplicating and rotating, and scaling, on
any entity including structured and unstructured grid entities (not just geometry) and automatically and
instantaneously updates all data structures.

Grid Generation Module


The Grid Generation Module enables you to create structured or unstructured grids.

Structured Grid Generation


The structured grid generation is based on transfinite interpolation (TFI) methodology. The module supports
uniform, exponential, geometric, and hyperbolic tangent grid point distribution along edges. Grid generation on
NURBS curves is done directly on the curves themselves. Grid generation on NURBS surfaces is completed by
projecting an approximate TFI grid directly onto the NURBS mathematical representation of the surface, or by
computing the TFI grid in the parametric space of the surface.

An important step between geometry modeling and grid generation is the definition of the topology. CFD-GEOM
uses a bottom-up approach in labeling geometry elements as edges, faces, and blocks.

Edge In structured grid generation, an edge forms the basic element for both surface and volume grid
generation. An edge is comprised of one or more connecting geometry elements, i.e., lines and
curves, having n grid points and n-1 line segments connecting those grid points. A user-specified
collection of connected edges forms an edge set. Be aware that grid points along an edge (edge grid
points) are different from the points created using geometry creation tools (geometric points),
though their coordinate values may be the same.
Face Four user-specified edge sets (fewer for degenerate topologies) form a face, the basic construct for
surface grid generation. A face is a surface discretisation created by either TFI from the edge sets or
by TFI from a previously created NURBS surface. A user-specified collection of one or more faces can
be combined to form a face set.
Block Six face sets (fewer for degenerate topologies) combine to form a block, the basic construct for
volume grid generation. A block is a volume discretisation created from face sets that form its
boundaries. In some cases it is possible to combine two or more grid blocks into a single grid block,
resulting in a composite block. The TFI grid lines of each member block are preserved within the
composite block.

The final result of defining a topology is a collection of one or more blocks that form a single or multi-domain grid.
Both 2D and 3D multi-block structured grids can be created and are fully supported within CFD-GEOM.

19
CFD-GEOM V2014.0 User Manual

Unstructured Grid Generation


Because 2D and 3D unstructured grids are composed of different entities, different topological requirements exist
for unstructured grid generation than for structured grid generation. Unstructured grids are created within
unstructured domains. (Unstructured domain refers to user-defined solid regions defined from sets of surfaces
grouped into shells) In 3D, the unstructured domain consists of one or more shells.

Shell consists of a set of connected surfaces or faces. The surfaces or faces that create a shell must create
a water tight volume, i.e. there can be no gaps or cracks in order to create the shell.

20
Chapter 3. Menu Bar

Introduction to the Menu Bar


The menu bar is located at the top of the CFD-GEOM window. The menus include the following:

File Menu
Edit Menu
View Menu
Window Menu
Help Menu

File Menu
Click File on the menu bar to access the following commands:

New
Open
Import
Save
Save As
Save As DTF
Close
Close All
Image
Quit

File Menu

21
CFD-GEOM V2014.0 User Manual

NEW

Click the New command to open the New Model dialog box. Use this dialog box to enter a valid name for the new
model and, optionally, journaling and unit preferences. After setting the required data, click OK to create a new,
empty model and viewer. You can then import data into this model or begin creating objects. The New command
is also available from the Standard toolbar.

New Model Dialog Box

OPEN

Click the Open command to open the Open File dialog box and open geometries or grids that have been created in
one of the listed formats. You can navigate through the file directory by using the directory options or the

directory up button. You can also use the buttons to display the files as a list, icons, or with details,
respectively.

The File Filter box provides a number of filter options. The default file filter is *.GGD. If you select one of the file
types listed at the top of the dialog box, the File Filter box automatically updates. Conversely, changing the file
filter type using the File Filter options updates the buttons and check boxes at the top of the dialog box.

The Open command is also available from the Standard toolbar.

22
Menu Bar

Open File Dialog Box

Open a file
1. Select the Open option from the File Menu. The Open File dialog box appears.
2. Select a file type from the File Type section.
3. Double-click on a file name in the file list or select a file from the file list and click OK.

23
CFD-GEOM V2014.0 User Manual

IMPORT

The Import option imports models from various file formats into CFD-GEOM so that you can begin working on your
project. The Import option behaves similarly to the Open option with the difference that Import reads the file into
the current model. GGD files cannot be imported into an existing model unless the model is empty.

The precision used when importing can either be the one stored in the file, or the precision using the Model
Relative Precision option. The Model Relative Precision option will multiply the diagonal of the bounding box that
encloses the geometry by the factor specified on the import panel. The Model Relative Precision option has been
found to improve file import for CAD files.

As of version 2008.0 of CFD-GEOM, CAD files can now be imported directly into CFD-GEOM using the ACIS Interop
Libraries. Note that these import options require a new license. If you are interested in one of these import
options, please contact the your sales account manager.

With the addition of these new CAD file import options, new assembly processing options have been added:

None No special processing is done to the CAD file.

Interface Parts Solids in the CAD file will be processed such that they will share common surfaces.
Solids will be combined into a single solid and any shared surfaces will be
Combine Parts removed.

Starting with version 2013.0 there is now an option to read all CAD files, excluding IGES, as discrete surfaces
instead of actual CAD geometry. Using this option will convert the CAD model into a discrete representation. This
option is typically much faster and can be used to, usually, obtain a closed, water-tight model but without the
modeling flexibility inherent in CAD models.

The following is a list of the readers and their support on different platforms:

Window (32- and 64-bit Parasolid, UG, SolidWorks, Pro/E, Catia V4, Catia V5 and Step
Linux (32-and 64-bit) Parasolid, UG, Pro/E, Catia V4 and Step

In addition, for 2013.0, CAD data may be saved to Parasolid or Step formats.

When you select the Import option, the Open File dialog box appears. Use the directory drop-down menu and
directory up buttons to navigate through the file directory. The default file filter is *.DTF. However, the latest
selected file format is recorded in the registry and will automatically be set upon the next invocation of the Import
File command. As you select the radio buttons, the file filter field is automatically updated. The file list can be set
to display the files as a list, icons, or with details. CFD-GEOM supports the file formats shown in the Open File
window:

24
Menu Bar

Import File Dialog Box

Import a file
1. Select the Import option from the File Menu. The Import File dialog box appears.
2. Select a file type from the File Type section.
3. Double-click on a file name in the file list or select a file from the file list and click OK.

25
CFD-GEOM V2014.0 User Manual

SAVE

The Save option saves a model in one of the following formats: the original GGD file, DXF, TAB, IGES, VPL, STL and
SAT. Any changes that have been made during the current CFD-GEOM session will be written to the file. The Save
option updates the original file with the new information. If you want to preserve the original file then use the
Save As option. The Save option is also available in Toolbar >-Save.

Save a file
1. Select the Save option from the File menu.

Note The first time you are saving a file, the Save File dialog box opens. If the file has been previously
saved, no dialog box opens.

2. In the File Type section, select a file type.

3. In the File Name window, enter the new file name.

4. Click OK to save the file. The file is saved to the location you have selected. When saving the file again,
just click the Save button on the Tool Bar. No dialog box will appear.

SAVE AS

The Save As option saves the models in the file format that you choose. The Save As option is also available in
Toolbar > Save As. CFD-GEOM supports various file types:

26
Menu Bar

Save As Dialog Box

Save a file with a new name and/or in a different file format


1. Select the Save As option from the File menu. The Save File dialog box appears.

2. In the File Name window, enter a different file name if you want to change the name of the file.

3. In the File Filter window, click the down arrow key and select one of the file formats.

4. Click OK to save the file.

27
CFD-GEOM V2014.0 User Manual

Overwrite an existing file


1. Select the Save As option from the File menu. The Save File dialog box appears.

2. In the File Name window, select the file you want to overwrite.

3. Click OK to save the file. A warning box appears asking if you want to Overwrite, Append, or Cancel.

4. If you select Overwrite, the data you are saving will overwrite existing data in the file you have selected.

5. If you select Cancel, the dialog box will close and the data will not be saved. However, it will remain in the
current session of CFD-GEOM.

SAVE AS GGD

Version 2013.0 allows the saving of volume mesh data (unstructured domains only) directly to the GGD file; the
“Save Volume Meshes” button will become active when any unstructured domain has been meshed. Subsequent
saves/reads will honor this setting. Additionally, the option to save the GGD file as compressed can be selected in
order to save disk space. The file will automatically be given a .gz extension and subsequent saves will honor this
setting.

SAVE AS DTF

Beginning with V2009.2, a new option for outputting DTF files is now available. CFD-GEOM now offers 2 types of
DTF output—nonsimplified and simplified.

28
Menu Bar

Save File As DTF Dialog Box

NonSimplified In the non-simplified form (the default), the topology of the output mesh matches that of
(default) the CFD-GEOM mesh system. For 3-D meshes, each structured, semi-structured, and
unstructured domains, as well as filaments, are written to their own zones with one cell
group per zone. Similarly, the surfaces/faces that bound a zone are written to separate face
groups/patches. Where appropriate, face groups/patches are written as interfaces in each
zone that shares them. Similar rules apply for 2-D mesh systems. The result is that, the
output mesh often reflects the artificial decomposition needed in CFD-GEOM to produce
the meshes. For downstream applications such as CFD-ACE-GUI, this can result in a very
large number of volumes and surfaces upon which volume and boundary conditions must
be set.
Simplified Using the "simplify" option, shown in the DTF output panel below, allows for a significant

29
CFD-GEOM V2014.0 User Manual

reduction in the number of volume and boundary conditions during output by


automatically combining volumes and surfaces that satisfy certain criteria (see below).
The simplifying option can be used to reduce the number of boundary and volume
conditions to a handful. It does not permanently alter the topology of any CFD-GEOM
geometry/mesh systems. Instead, it creates a new temporary topology by identifying
related volumes and surfaces and combining them during mesh output. It is helpful to think
of these as composite volumes and surfaces, respectively.
Domains - structured, semi-structured, and unstructured domains are grouped into a
composite volume if they satisfy the following constraints:
• They must have the same volume condition type and name
• They must be contiguous. That is, by traversing faces and/or surfaces, each
domain in a composite volume must be reachable from every other domain in the
composite volume.
Filaments - filament entities are never combined with other domains, nor with other
filaments, because they require special treatment within the CFD-ACE solver. Note that DTF
simplification is also available for 2-D mesh systems, and similar rules apply.
Surfaces - surface, Face, and Discrete Surface entities are combined into a composite
surface if the following conditions are satisfied:
• They must have the same BC type and name
• They must bound exactly the same composite volumes
• They must be contiguous.
• They must not contain both arbitrary and non-arbitrary interfaces
Interfaces between domains within a composite volume are discarded because, within the
new topology, they do not exist. Additional issues include the following:
• At a minimum, Inlet and Outlet BC should be defined for "simplify" output.
• DTF grouping information set in the BC and VC editors is currently ignored during
"simplified" DTF output.
• The default DTF zone type is unstructured. If any member of a composite volume
contains a polyhedral mesh, the volume will be promoted to a polyzone.
• Structured zones are never written - any structured meshes are promoted to
unstructured hexahedral meshes or poly meshes.
• When viewed in downstream applications such as CFD-ACE GUI, the key numbers
for volumes and surfaces will usually not match any CFD-GEOM entity. CFD-GEOM
must generate new (and unique) key numbers to associate with the new volumes
and surfaces in the combined mesh systems.
• Extra care is needed when "updating" an existing DTF file. Updating is sensitive to
topological changes. Unlike "non-simplified" DTF output, a simple change in a
BC/VC name or type can cause entities to be grouped differently, resulting in a
topological change in the output mesh.
AutoName If checked, then during output, CFD-GEOM will automatically name BC's and create BC
groups based on VC names and BC types. Use this option with caution as it will overwrite
any previously assigned BC names. Please refer to BC tool to learn more about the

30
Menu Bar

recommended workflow for automatically naming BCs.

CLOSE

The Close option closes the active viewer window. If modifications have been made to a model during a CFD-
GEOM session, a dialog box appears prompting you to save the current model before closing.

CLOSE ALL

The Close All option closes all viewer windows in CFD-GEOM.

IMAGE

The Image option saves an area of the model or the entire window as an RGB, GIF, BMP, PNG, PS, or XPM file.

Save Image Window

Save an area of the model


1. Select Image from the File menu.

2. Select the Area option. The cursor changes to a corner-shaped lasso.

3. Press the left mouse button and drag the mouse to lasso the area you want to save.

4. Release the mouse button and the Save Snap Shot Window appears.

5. In the File Name field, enter the new file name for the image.

31
CFD-GEOM V2014.0 User Manual

6. In the File Filter field, click on the down arrow and select a file type: RGB, GIF, BMP, PNG, PS, or XPM file.

7. Click OK to save the file. The file is saved to the location you have selected. Note that unlike the file save
dialog you are responsible for setting the desired extension.

Save the entire contents of the window


1. Select Image from the File menu.

2. Select the Window option. The Save Snap Shot Window appears.

3. In the File Name field, enter the new file name.

4. In the File Filter field, click on the down arrow and select a file type: RGB, GIF, BMP, PNG, PS, or XPM file.

5. Click OK to save the file. The file is saved to the location you have selected. Note that unlike the file save
dialog you are responsible for setting the desired extension.

QUIT

The Quit option closes all simulations and terminates the application. If there are any simulations with unsaved
data, the following dialog box appears to ask if you want the simulation saved before closing. If you choose No, the
application closes and all current data will not be saved. If you choose Yes, the Save dialog box appears so that you
can save your data.

Unsaved Changes Dialog Box

Edit Menu
The Edit menu enables you to perform routine functions, select (pick), de-select, and blank entities, and set
preferences. It contains the following:

Undo, Redo, Unpick


Cut, Copy, Paste, Delete
Select All, Deselect All
Blank, Blank Remaining
Advanced Blanking

32
Menu Bar

Advanced Picking
Toggle
Entity Color
Levels
User Variables
User Notes
Preferences

Edit Menu

UNDO, REDO, UNPICK

The Undo option reverses the last operation. The Redo command reverses the last undo operation. The
Undo/Redo operations support multiple Undo/Redo at one time. If a tool is open, i.e. point creation tool, and you
have an entity selected, then CFD-GEOM will not allow you to perform an Undo/Redo operation.

The Unpick option deselects an object. The Undo and Redo options are also available in Toolbar > Undo, Redo.

33
CFD-GEOM V2014.0 User Manual

Undo and Redo options under the Edit menu

CUT, COPY, PASTE, DELETE

The Cut option removes a selected object from the viewer window and places it on a virtual clipboard.

The Copy option copies a selected object from the viewer window and places it on a virtual clipboard.

The Paste option places an object from the virtual clipboard onto a viewer window.

The Delete option deletes a selected object from the viewer window. A warning might appear in the status bar if
you attempt to delete objects that are used as parts of other objects , e.g., a point is part of a line, a line is part of
an edge, and so on. Any object that is part of a block (its faces, edges, lines, curves, and points) cannot be deleted
until the block is deleted.

SELECT ALL, DESELECT ALL

The Select All option selects all visible objects on the screen that are eligible for picking. Use the Entity Bar to limit
the picking to certain types of entities. The Deselect All option de-selects all objects that were previously selected.

BLANK, BLANK REMAINING


The Blank option hides selected objects from view in the viewer window. The Blank Remaining option blanks all
entities that are not selected. To unblank an entity, select the All On button located on the Entity Bar.

ADVANCED BLANKING
The Advanced Blanking option displays additional options that enable you to blank/unblank construction
sequences and blank/unblank constructed elements.

Advanced Blanking Options

34
Menu Bar

Blank/Unblank Parents Blank Parents will blank the elements used to create an entity. For example,
using this option and highlighting a line will cause CFD-GEOM to blank the
points used to create the line. To unblank the entity elements, use the Unblank
Parents option.
Blank/Unblank Children Blank Children will blank the entities that are built off the selected entities. For
example, by selecting an edge and choosing the Blank Children option, any
faces and/or block constructed from that edge will be blanked.

ADVANCED PICKING
The Advanced Picking options enable you to pick the elements that were used to create an object and its levels.
For example, selecting a line will cause CFD-GEOM to highlight the points used to create the line or selecting a
block will highlight the lines used to create the block.

Advanced Picking Options

PICK PARENTS
Pick Parents will pick the elements used to create an entity. For example, using this option and highlighting a line
will cause CFD-GEOM to pick the points used to create the line.

Pick parents
1. Select an object in the viewer window.
2. Select Pick Parents from the Advanced Picking option. The elements that created the object appear in red.

PICK CHILDREN
Pick Children will pick the entities that are built off the selected entities. For example, by selecting an edge and
choosing the Pick Children option, any faces and/or block constructed from that edge will be picked.

PICK UNMESHED

Pick any trimmed surfaces, unstructured domains and Cartesian domains that have not been meshed. The picking
will apply to only the currently visible entities.

TOGGLE

The toggle option globally blanks (hides) all entities that are currently displayed, and simultaneously unblanks
(reveals) all entities that are not displayed.

35
CFD-GEOM V2014.0 User Manual

ENTITY COLOR

The Entity Color dialog box allows the you to modify the color of selected entities. To modify a color, select the
desired entities, then go to Edit --> Entity Color to change the color. The Alpha slider can be used to give surfaces a
simple transparency; smaller values of Alpha are more transparent.

Entity Color dialog box

LEVELS

The Levels option enables you to differentiate and group geometric entities. This option allows you to quickly show
and hide geometries of interest to ease the model building process. Selection of this option displays the dialog
show below. The levels dialog allows you to manage the creation, removal, addition/deletion of levels and their
associated entities. The dialog is non-modal (allows anytime user interaction), thus it can remain visible at all
times.

The color well allows the user to color all entities in a selected level by a desired color. The entities will be drawn
with the color when the color mode is "Color Entities by Level", which can be selected from the main tool bar.

36
Menu Bar

Level Editor dialog box from the Edit menu

Level Display Click on a column heading to change the order in which the rows appear (sort order). The
Dialog first click sorts the rows based on that column's contents in descending order and a second
click sorts in ascending order. A triangle in the sort column indicates which column is being
used to sort the data and the direction of the sort. To change the width of a column, click
and drag the border between the two column headings.
The level editor shows the current active level by a check mark in the far left column and
also allows multiple selections. When multiple items are selected then the name field will
be disabled however, all the other functionality will remain and the user can add/remove
entities, hide/display, or set a common color.
New To create a new level, click the New button. The new, empty level is created with the next
available number prepended by the text "level". Add entities to the level by selecting an
entity from the viewer window and then selecting the Add Entities button.
Delete Click this button to delete the selected level.
Add Entities Click this button to add entities to a level.
Remove Entities Click this button to remove entities from a level.
Hide Click this button to hide a level and its associated entities from view in the graphics area.
Show Click this button to view a level and its associate entities in the graphics area.

Change the name of a level


1. Select the desired level.

2. Type a new, unique name in the provided text field.

37
CFD-GEOM V2014.0 User Manual

USER VARIABLES
The User Variables options enable you to create and manage your own variables which can be referenced during
the model building process. All geometry input text fields allow the input of your own defined user variables in-lieu
of fixed numbers. For instance, you could create a variable 'cos45' with its value as cos(45) to be used wherever
such data is needed in place of hand-computing cos(45) and using that value.

User Variables dialog box located under the Edit menu

Note CFD-GEOM does not require you to name data in any particular order, as it automatically determines variable
dependencies. For example, the following is perfectly valid:

38
Menu Bar

Example variables where order of variable definitions does not matter

The most commonly used operators are available from the following set of buttons:

Append adds a new row at the end of the list.


Insert adds a new row above the currently selected row in the list.

Delete removes the selected row and variable from the list.

USER NOTES

The User Notes option enables you to create notes for a model. These notes are saved in the GGD file. If you read a
GGD file containing such notes, you are informed that they exist and are given an opportunity to read them. You
can read, update, or remove notes at any time.

User Notes dialog under the Edit menu

39
CFD-GEOM V2014.0 User Manual

PREFERENCES

The Preferences option enables you to specify default values for files, model displays, and modeling parameters.
Preferences contains the following options:

Files
Display
Logo
View Colors
Tools

Preferences Dialog Box

40
Menu Bar

PREFERENCES-FILES TAB

The Files panel enables you to set the time interval for automatically saving a backup file. You can also set the
temporary files directory where files are temporarily saved.

PREFERENCES-DISPLAY TAB

The Display tab contains several options:

Toggle Graphics Hardware Check this box if hardware acceleration is required. (Some video cards or
Acceleration outdated video card drivers may require this.) Clear the box to turn off this
option.
Dynamic Highlighting Dynamic highlighting is the automatic highlighting of the nearest pickable
entity. This option is enabled, by default. However, if this highlighting
becomes distracting or causes slow interaction for very large models, then
clear the check box to disable this feature.
Turbo View Turbo View, on by default, is often a necessity when working with large
models. However, you can deactivate this view by clearing the check box.
Zoom to Screen Center The default behavior for CFD-GEOM is to zoom to the center of the screen.
When this option is turned off, CFD-GEOM will zoom in to the mouse location
in the graphics area, rather than the screen center.
Enable/Disable Entity Hover Help By default, when the pointer is hovering over an entity in the graphics
window, a temporary tip details some of the attributes of the entity. If this
behavior becomes a distraction, clear the check box.
Automatically preview operations By default, many of the modeling operations show a preview of the final
result. For lengthy modeling operations you may want to disable this
automatic preview. Clear the check box to do so.
Graphical Shortcut Toolbar By default, CFD-GEOM displays shortcut buttons in the graphics window that
correspond to the currently active tool in the Control Panel. Clear this check
box to disable this feature.
Selection Sensitivity Selection sensitivity controls the sensitivity of the picking in the graphics
window; larger values will tend to select more items near the cursor while
smaller values will tend to select fewer items.
Restore Defaults Restores the default values on a per tab basis, so each tab is selectively
restored to default values.

41
CFD-GEOM V2014.0 User Manual

Preferences - Display Panel

PREFERENCES-LOGO TAB

By default, CFD-GEOM has the ESI Group logo in the lower right hand corner of the graphics window. The position
and logo in the graphics area may be modified in the Logo tab. A custom logo may be used by selecting the
Custom Logo option and selecting logo located on your computer. The logo can be deactivated by unchecking the
Display Logo option.

42
Menu Bar

Preferences - Logo Panel

PREFERENCES-COLORS TAB

The Colors panel enables you to control the display colors for entities, grids, etc. The color settings are grouped
into logical units as General Colors, Entity Colors, Grid Colors, VC (Volume Condition) colors, and Color Schemes.

The Color Schemes section contains controls that allow you to create and save three user defined color schemes.
For the user defined schemes, you can modify the colors for the scheme, then click Apply to apply the scheme to
the current model. Once the scheme has been applied, it is saved to the registry so the next time CFD-GEOM is
launched, the last scheme that was applied will be used.

Note Colors may be changed by dragging and dropping a color from one color well to another.

43
CFD-GEOM V2014.0 User Manual

Preferences - Viewing Colors Panel

44
Menu Bar

Color Dialog Box

Change color preferences


1. Select the Preferences option from the Edit Menu. The Preferences dialog box opens.

2. Click the Colors tab.

3. Double click in the desired color well, then select a new color in the colors dialog.

4. Change the color as needed using the tabs. Reading from the left, the tabs are as follows:

The first tab enables you to change the hue, saturation, and value of the color visually. Click anywhere on
the color wheel to change the color, then use the vertical bar to change the shade.

The second tab enables you to use a slider bar to change the red, green, and blue values for the selected
color.

The third tab enables you to use a slider bar to change the hue, saturation, and value for the selected
color.

The fourth tab enables you to use a slider bar to change the cyan, magenta, and yellow value for the
selected color.

The fifth tab changes the color by name. It allows for greater accuracy in consistently applying colors to a
surface and was designed for those who need to rely on color by name rather than visual acuity.

5. Select a new color and click OK. The new color appears in the Preferences window.

45
CFD-GEOM V2014.0 User Manual

PREFERENCES-TOOLS TAB

The Tools tab allows you to specify the default web browser to be used to launch the CFD-GEOM WebHelp. By
default, Internet Explorer is used on Windows machines. You can use your default browser, such as Firefox, by
choosing the Default Browser option.

CFD-GEOM does not come with a text editor for editing Python scripts. Instead, you can specify the text editor to
use when running Python scripts. There are many text editors available to choose from, such as: vi, gVim, emacs,
nedit, etc. To select the editor, click the Browse button and browse to the directory where the editor is installed.

The Scripts directory is available to specify where CFD-GEOM should look for Python scripts written by the user.

Preferences - Tools Panel

46
Menu Bar

View Menu
The View Menu enables you to determine how you want to view objects in the viewer window. It contains the
following options:

Preset Views
Reset View
Projection
Center of Rotation
Along Plane Normal
Toggle
Rotation/Scaling Editor
Lighting Editor
Volume Grids
Model Summary
Model Manager
Script Output
Turbo
Smooth Animation
Dynamic Highlighting
Exposed Boundaries
Copy Viewpoint
Paste Viewpoint

View Menu

47
CFD-GEOM V2014.0 User Manual

PRESET VIEWS

The Preset Views option manages, manipulates, and saves an unlimited number of named views of a model. The
preset views can be saved and restored from the model GGD file, and each model can have its own set of views.
When you select the Preset Views option from the View Menu, the Preset Views window opens:

Preset Views Editor

The Preset Views Editor buttons include the following:

Update updates the selected view to the current model viewing parameters
and supplied name
Delete deletes the selected view
Apply applies the selected view to the model
Cancel resets the view

Create a new preset view of a model


1. Place the model in the desired view.

2. Select the Preset Views option from the View Menu. The Preset Views window appears.

3. Enter a name for the view in the Name field.

4. Click the Add button. The view name appears in the Views field.

5. Click the Accept button to set the view for the model.

48
Menu Bar

Update or delete an existing preset view


1. Select the Preset Views option from the View Menu.

2. In the Preset Views window , select a view from the Views field.

3. Choose one of the appropriate options.

4. Click the Accept button.

RESET VIEW

The Reset View option resets the viewing parameters (translation, rotation) to one of the six orthogonal views. You
can select the front, rear, left, right, top, or bottom view. The hot key for the front (default) view is Ctrl-F. Any
preset views that have been added will be appended after the Reset option, enabling quick access to a desired
view. Reset View is also available in Toolbar-> Reset View.

Reset View Options

Front positions the viewer in front of the object based on the z-direction. The object is in xy-plane.
Behind positions the viewer behind the object based on the z-direction. The object is in xy-plane.
Left positions the viewer to the left of the object based on the x-direction. The object is in yz-plane.
Right positions the viewer to the right of the object based on the x-direction. The object is in yz-plane.
Top positions the viewer on top of the object based on the y-direction. The object is in xz-plane.
Bottom positions the viewer below the object based on the y-direction. The object is in xz-plane.
Iso positions the viewer such that the view is a thirty degree rotation about the X and Y axes.

PROJECTION

The Projection option sets the view to either a parallel or perspective view. It is also available in Toolbar >
Projection.

49
CFD-GEOM V2014.0 User Manual

Projection Option

Change the projection view


1. Select the geometry in the graphics area.

2. Select the Project option from the View menu.

3. Select either the parallel or perspective view. The geometry changes to the view you have chosen.

CENTER OF ROTATION

The Center of Rotation option enables you to select a new rotation center. It is also available in from the toolbar.

Select a new rotation center


1. Select the center of rotation option.

2. Select any visible entity in the model; the center of the bounding box for the selected entity will then
become the center of rotation and it will be moved to the center of the graphics window. The center of
rotation will not change with any subsequent graphics operations unless a new center is chosen or a Fit to
View or Reset View is performed

ALONG PLANE NORMAL

The Along Plane Normal option adjusts the view in the active viewer window so that it aligns with the normal of
the currently specified construction plane. This option is useful in allowing you to specify an interactive point on an
arbitrarily oriented construction plane.

TOGGLE

The Toggle options allows you to toggle between blanked and unblanked entities.

ROTATION/SCALING EDITOR

The Rotation/Scaling option enables you to rotate and scale a model about the X, Y, and Z axes. The X,Y,Z controls
in the Scaling section enable you to view the model with non-uniform scalings in each of the three primary
directions. The dials or text fields allow you to enter a range from .001 and upwards. The scaling factors effect only
the rendering characteristics and do not affect the actual geometry of the model.

50
Menu Bar

Rotation/Scaling Panel

Rotate or scale a model


1. Select on of the following options:

2. Click the left mouse button on the X,Y, or Z dial and slide it left or right to adjust the rotation or scaling.

3. Enter the X, Y, and Z factors in the text fields. The model rotates in the viewer window about the specified
axis.

LIGHTING EDITOR

The Lighting Editor enables you to specify the intensity and color of different light sources to obtain a different
rendering of the model. The intensity and color of each light source can be set by its slider and color well. By
default, only the light sources labeled as Eye and Global Ambient are active. There are eight spot lights arranged
around a model in the viewer and they are controlled with intensity sliders and colors. All of the lights are aimed at
the center of the model and enable you to light an object at eye level, from the left, right, top, bottom, behind,
back left, or back right. You can select the color of the lights by double-clicking the color well at the bottom of each
of the sliders and selecting the color. The sliders control the intensity of the light and act as dimmer switches. The
default color of the spot lights is white.

51
CFD-GEOM V2014.0 User Manual

Lighting Editor dialog

Color Dialog Window

Change the lighting on a model


1. Click the Lighting Editor tab on the View Bar. The Lighting Editor panel appears.

2. Double-click the color well for a spot light or ambient light. The Color Dialog box appears.

3. Select a color by clicking on the color bar at the bottom of the window. The color appears under the
eyedropper to indicate the color you have chosen.

4. Change the color as needed.

52
Menu Bar

• The first tab enables you to change the hue, saturation, and value of the color visually. Click anywhere on the
color wheel to change the color, then use the vertical bar to change the shade.

The second tab enables you to use a slider bar to change the red, green, and blue values for the selected
color.

The third tab enables you to use a slider bar to change the hue, saturation, and value for the selected
color.

The fourth tab enables you to use a slider bar to change the cyan, magenta, and yellow value for the
selected color.

The fifth tab changes the color by name. It allows for greater accuracy in consistently applying colors to a
surface and was designed for those who need to rely on color by name rather than visual acuity.

5. Click the Accept button to apply the color to the dimmer or ambient light in the 3D viewer.

6. In the Lighting panel, click and hold the left mouse button and drag the slider bar up and down to adjust
the intensity of light on the model.

7. Make changes as needed, based on the following parameters:

• Material Shininess- Use the slider bar to determine how shiny or flat you want the surface. Sliding the bar
down makes the surface flat, while sliding the bar up makes the surface more shiny.
• Global Lighting - Global lighting (also known as ambient light) simulates the light that reaches the model after
reflecting off of numerous other surfaces and does not appear to come from any particular direction. The
ambient light is controlled in the same manner as the spot lights. However, adjusting the intensity of ambient
light with the slider bar has the effect of raising or lowering the brightness of the entire scene. The default
color of the ambient light is white.

VOLUME GRIDS
The Grid Viewers panel checks grid quality using unstructured X, Y, and Z axes, grid quality checks, or structured I,
J, and K planes .

53
CFD-GEOM V2014.0 User Manual

Grid Viewers Panel

Unstructured The Unstructured X, Y, and Z section of the Grid Viewers tab contains sliders that enable you to see
unstructured and structured volume grids on unblanked blocks, composite blocks, domains, and
semi-structured domains. To use the X, Y, and Z sliders to check grid quality, move the appropriate
slider or enter the coordinates in the X, Y, Z fields. For example, if you position the X slider at
position 0, all tetrahedra, pyramids, prisms, and hexahedra that intersect the X=0 plane will be
drawn. Selecting hidden line or smooth shading from the View Menu-Grid Display Options will often
make the cells easier to see.
Structured The Structured I, J, and K section of the Grid Viewer tab contains grid sliders that enable you to draw
I, J, and K cuts through unblanked blocks and composite blocks. For example, setting the I value to 5
will draw a cross section through each block or composite block at its I=5 grid plane (if it exists).
Indexing starts at 1 (i.e. I =1 corresponds to a blocks Imin side).

54
Menu Bar

MODEL SUMMARY

The Model Summary dialog gives general information on the number and type of geometric entities in the model
as well as grid information.

In the Grids option, you can get information on the number cells by type, i.e. number of structured cells,
unstructured cells, or semi-structured cells. The bounds for each block are domain are provided when selected
from the list.

MODEL MANAGER

The Model Manager can be shown or hidden from this option. For large models the model manager can be hidden
to improve performance. See Model Manager for more information on how to use the Model Manager to manage
model data.

55
CFD-GEOM V2014.0 User Manual

SCRIPT OUTPUT

The read-only Script Output window displays any messages emitted from opening or executing a script. This
window is cleared on each execution of a script. Click the OK button to close the window.

Script Output Dialog

TURBO
The Turbo option reduces drawing time while you manipulate the model. As you zoom, rotate, or translate,
drawing operations (e.g., surface shading, grid display, etc.) are temporarily disabled. When the manipulation is
complete, drawing resumes its normal behavior. When Turbo is active, a check mark appears next to the option on
the View Menu. To make it inactive, click the Turbo option again.

SMOOTH ANIMATION
The Smooth Animation option causes the viewer to change the view from its current view to any of the preset
views, reset the view, or fit to view, in a continuous smooth motion, rather than the default, immediate change.
When Smooth Animation is active, a check mark appears next to the option on the View menu.

DYNAMIC HIGHLIGHTING
By default, dynamic highlighting (automatic highlighting of the nearest pickable entity) is enabled; if this should
become too distracting or cause slow interaction for very large models, then you may uncheck the "Dynamic
Highlighting" box on the View menu to disable this feature.

56
Menu Bar

EXPOSED BOUNDARIES
The Exposed Boundaries button controls the visibility of boundary curves and edges which are used for only one
surface/face/discrete surface. This allows the user to visually identify those areas of the model where gaps remain
in an otherwise "watertight" geometry. By default, Show Exposed Boundaries is not enabled.

COPYING AND PASTING VIEWPOINT

The Copy Viewpoint and Paste Viewpoint options let you to copy the view settings from one viewer window to
another. The result of this operation is that the models have the same orientation.

Copy and paste viewpoints


1. Select the first viewer window and click View > Copy Viewpoint.
2. Select the second viewer window, to make it the active viewer, and click View > Paste Viewpoint.

Note Alternatively, you can right-click on the viewer window and select these options from the context
menu.

Window Menu
The Window Menu enables you to open and close a new viewer window, change the appearance of multiple open
viewer windows, and display which tool bars appear in the CFD-GEOM window. It includes the following options:
New Viewer,
Close Viewer
Tile Horizontally
Tile Vertically
Cascade
Overlay

Window Menu

57
CFD-GEOM V2014.0 User Manual

NEW VIEWER, CLOSE VIEWER

The New Viewer option creates a new viewer window in the workspace. When you launch CFD-GEOM, it
automatically opens one viewer window. The viewer is initially empty and you must import a file or begin creating
objects to begin working. The New option is also available in Toolbar > New.

Create a new viewer window


1. Select the New option from the File menu. A new viewer window is opened.

TILE VERTICALLY, HORIZONTALLY, CASCADE

The Window Appearance option provides you with various ways to view multiple windows in the workspace. These
options only affect the non-minimized windows.

Tile vertically displays all of the open viewer windows in a vertical manner
Tile horizontally displays all of the open viewer windows in a horizontal manner
Cascade displays all of the open viewer windows in a cascading manner

OVERLAY

The Overlay option provides a temporary drawing surface for use with two separate models. Only one model can
be active at a time, and you can only pick or add from the active model. You can switch between models, if you
choose.

Help Menu
The Help menu assists you in finding topics that provide additional information for using CFD-GEOM. When you
click the Help Menu on the menu bar, the Help Menu opens.

The Help menu includes the following options:

CFD-GEOM Help
ESI Group on the Web
Tip of the Day
Shortcuts
About CFD-GEOM

CFD-GEOM HELP
The Online Help file brings you problem-solving resources around the clock. We deliver our Help file in an easy-to-
use interface, complete with a table of contents, index, glossary, and Natural Language Search functionality. When
searching for a topic, you will get the best results if you search by keyword as opposed to asking a question.

58
Menu Bar

ESI GROUP ON THE WEB

ESI CFD on the Web provides a direct link to the ESI CFD web site for additional information about our products
and services.

Web Site: http://www.esi-group.com


Software Support E-mail: [email protected]

TIP OF THE DAY

The tip of the day window provides useful usage hints and possible changes in the layout and structure of tools in
the current version of CFD-GEOM.

SHORTCUTS

The Shortcuts command displays a list of keyboard shortcuts that you can use with CFD-GEOM. Keep in mind that
shortcuts are case sensitive; for example, D and d perform different actions.

ABOUT CFD-GEOM
The About CFD-GEOM window provides version information for CFD-GEOM, CFD-DTF, and FOX libraries.

59
Chapter 4. Toolbars

Overview

CFD-GEOM includes several toolbars that provide quick access to many of the actions needed to work with your
model. These toolbars are identified as the Standard toolbar, the Coloring toolbar, the Modeling toolbar, the
Scripting toolbar,the Rendering toolbar, and the Custom toolbar. Each of these toolbars includes a move handle
that allows you to reposition the toolbar. You can either drag and drop the toolbar to its new position or click the
right button while hovering over the move handles and select from the shortcut menu.

To reposition a toolbar, click the move handle and when the pointer changes shape drag the toolbar to its
new location. In float mode, you can flip the toolbar so that it becomes vertical rather than horizontal.

Standard Toolbar

Coloring Toolbar

Modeling Toolbar

Rendering Toolbar

Scripting Toolbar

Sample Custom Toolbar

61
CFD-GEOM V2014.0 User Manual

Standard Toolbar
The standard toolbar contains buttons that are used as shortcuts to many of the same functions that are in the
Menu bar options. The standard toolbar contains the following buttons:

New
The New button creates a new viewer window. When launching CFD-GEOM, there is no viewer window open
by default. A new viewer must be created and the user is prompted for a model name and path to save the file in
the New Model dialog box. See also File menu > New.

Journaling is also available from the New Window dialog and must be activated at the beginning of model creation.
If journaling is not activated at model creation, it cannot be activated in the middle of model creation. This
behavior prevents the journaled Python script from and corresponding GGD file from becoming out of sync.

Note If you close the viewer window, an empty, new window opens by default.

Create a viewer window


1. Select the New button from the toolbar. A new viewer window is opened.

Open
The Open button opens geometries or grids that have been created in one of the formats listed under the File
Type section. You can navigate through the file directory by using the directory drop-down menu and directory Up
button. The default file filter is *.GGD.

There are a number of options available from the File Filter drop-down menu. If you select one of the buttons or
check boxes at the top of the dialog, the File Filter drop-down will be automatically updated. If you change the
pattern in the File Filter field, the buttons and check boxes at the top of the dialog box will be updated. The file list
can be set to display the files as a list, icons, or with details. See also File menu > Open.

Open a file from the toolbar


1. Select the Open button from the Tool Bar. The Open File dialog box appears.
2. Select a file type from the File Type section.
3. Double-click on a file name in the file list or select a file from the file list and click OK.

Import
The Import File button imports a file. See also File menu > Import.

62
Toolbars

Save
The Save button saves a model in one of four formats: the original GGD file, DXF, IGES, and VPL. Any changes
that have been made during the current CFD-GEOM session will be written to the file. The Save option updates the
original file with the new information. If you want to preserve the original file, then use the Save As option. See
also File menu > Save.

Save a file
1. Select the Save button from the Tool Bar. If this is the first time you are saving the file, the Save File dialog
box appears.

2. In the File Type section, select a file type.

3. In the File Name window, enter the new file name.

4. Click OK to save the file. The file is saved to the location you have selected. When saving the file again,
just click the Save button on the Tool Bar. No dialog box will appear.

Save As
The Save As button saves the model in the file format that you choose. See also File menu > Save As.

Save a file with a new name and/or in a different file format


1. Select the Save As button from the Tool Bar. The Save File dialog box appears.

2. In the File Name window, enter a different file name if you want to change the name of the file.

3. In the File Filter window, click the down arrow button and select one of the file formats.

4. Click OK to save the file.

Overwrite an existing file


1. Select the Save As button from the Tool Bar. The Save File dialog box appears.

2. In the File Name window, select the file you want to overwrite.

3. Click OK to save the file. A warning box appears asking if you want to Overwrite, Append, or Cancel.

4. If you select Overwrite, the data you are saving will overwrite existing data in the file you have selected.

5. If you select Append, (which only works if you are appending the data to an existing DTF file), additional
simulation data will be added (appended) to the end of the existing file.

6. If you select Cancel, the dialog box will close and the data will not be saved. However, it will remain in the
current session of CFD-GEOM.

63
CFD-GEOM V2014.0 User Manual

Cut, Copy, Paste, Delete

The Cut button removes a selected object from the viewer window and places it on a virtual
clipboard. The Copy button copies a selected object from the viewer window and places it on a virtual clipboard.
The Paste button places an object from the virtual clipboard onto a viewer window.

The Delete button deletes an object from the viewer window. A warning might appear in the status bar if you
attempt to delete objects that are used as parts of other objects, e.g., a point is part of a line, a line is part of an
edge, and so on. Any object that is part of a block (its faces, edges, lines, curves, and points) cannot be deleted
until the block is deleted. See also Edit menu > Cut, Copy, Paste, Delete.

Undo, Redo
The Undo/Redo operations allow you to undo or redo operations in CFD-GEOM. Multiple
undo/redo operations are supported. The Undo and Redo options are also available in Edit menu > Undo, Redo,
Unpick.

Projection

The Projection buttons set the view to either a parallel or perspective view. To change the projection
view, select either the parallel or perspective button on the Tool Bar. The geometry changes to the view you have
chosen. See also View menu > Projection.

Reset View

The Reset View option resets the viewing parameters (translation,


rotation) to one of the six orthogonal views. You can select the front, rear, left, right, top, or bottom view. The hot
key for the front (default) view is Ctrl-F. Any preset views that have been added will be appended after the Reset
option, enabling quick access to a desired view. Reset View is also available in View menu >-Reset View.

Options Description
Front This positions the viewer in front of the object based on the z-direction. The object is in xy-plane.

Behind This positions the viewer behind the object based on the z-direction. The object is in xy-plane.

Left This positions the viewer to the left of the object based on the x-direction. The object is in yz-plane.

Right This positions the viewer to the right of the object based on the x-direction. The object is in yz-
plane.

Top This positions the viewer on top of the object based on the y-direction. The object is in xz-plane.

Bottom This positions the viewer below the object based on the y-direction. The object is in xz-plane.

64
Toolbars

Options Description
Isometric Positions the viewer such that the view a thirty degree rotation about the X and Y axes.

Fit to View Allows the user to reset the viewer such that the model will be centered and fit the viewport
without losing the current rotational orientation.

Help
Click this button to open the help file.

Color Toolbar
Use the color toolbar buttons to customize the colors used in your project.

Colors

The Colors button changes the viewer window’s background color. When you click the Colors button the
Change Entity Color dialog box opens.

Color Dialog Window

Change the color of an object in the workspace


1. Click the Colors button on the toolbar.

65
CFD-GEOM V2014.0 User Manual

2. Select a color by clicking on the color bar at the bottom of the window. (The color appears under the
eyedropper to indicate the color you have chosen.)

3. Change the color as needed.

The first tab enables you to change the hue, saturation, and value of the color visually. Click anywhere on
the color wheel to change the color, then use the vertical bar to change the shade.

The second tab enables you to use a slider bar to change the red, green, and blue values for the selected
color.

The third tab enables you to use a slider bar to change the hue, saturation, and value for the selected
color.

The fourth tab enables you to use a slider bar to change the cyan, magenta, and yellow value for the
selected color.

The fifth tab changes the color by name. It allows for greater accuracy in consistently applying colors to a
surface and was designed for those who need to rely on color by name rather than visual acuity.

4. Click the Accept button to apply the color to the object in the workspace.

Entity Colors
The Entity Colors buttons enable you to assign colors by the colors you have chosen in the Edit menu >
Preferences-Colors panel, by entity type, and by levels.

Color by Assigned colors entities by the preferences you have chosen in the Edit Menu-
Color Preferences-Viewing Colors. For example, in the Viewing Colors panel, you can
drag and drop a color onto an individual entity and have it displayed by this
color. If no color is assigned to an entity, it will assume the default entity color
found in the Edit Menu-Preferences-Viewing Colors panel.
Color by Entity Type displays the entities according to the settings specified in the Edit Menu-
Preferences-Viewing Colors.

Color by Levels displays all entities by their level color according to the settings specified in the
Edit Menu-Preferences-Viewing Colors.

Model Toolbar
Axes toggles the orientation axes and global axes display off and on in the viewer
window.
Construction Plane toggles the construction plane on and off in the viewer window.

66
Toolbars

Model Scale shows the model dimension as projected along the Caresian coordinates

Center of Rotation selects a new rotation center. See also View menu > Center of Rotation.

Rendering Toolbar
The Rendering Toolbar buttons enable you to control the display characteristics of surfaces, face grids,
unstructured surface grids, and volume cut plane grids. The Rendering Tool Bar contains two sections:

Rendering Tool Bar: Surface Display / Grid Display / Edge Grid Display

Surface Display
The Surface Display buttons control the way that geometric surfaces are rendered. You can display the surfaces as
flat shaded, smooth shaded, or hidden line with or without an associated grid. The various surface display modes
are enabled when a red check appears in the button. By default, none of the buttons is checked thus, indicating
that surfaces are displayed only as outlines. The Surface Display buttons, from left to right, are as follows:

Surface Grid displays the grid lines


Surface Flat
shades the surface with a flat (no shine) finish
Shade
Surface Smooth
shades the face grids with a smooth finish
Shade
Surface Hidden
hides areas of the model to present a clearer perspective of the model
Line

67
CFD-GEOM V2014.0 User Manual

Grid Display

The Grid Display buttons control the way that face grids, unstructured surface grids and volume
cut lane grids are displayed. You can display the grids as flat shaded, smooth shaded, or hidden line with or
without the associated grid. The first button (Grid) controls the visibility of the grid and it appears with a red check
mark in front of it to indicate that the grid is being displayed. The Grid Display buttons, from left to right, are as
follows:

Grid default display mode and displays the grid lines


Flat Shade shades the face grids with a flat (no shine) finish
Smooth Shade shades the face grids with a smooth finish
Hidden Line hides areas of the model to present a clearer perspective of the model

Edge Grid Display


The Edge Grid Display button controls the visibility of grid points on edges.

Exposed Boundaries
The Exposed Boundaries button controls the visibility of boundary curves/edges which are used for only one
surface/face/discrete surface. This allows the user to visually identify those areas of the model where gaps remain
in an otherwise "watertight" geometry.

Script Toolbar
The Run Script button runs the script. For more information about using scripts, see the CFD-ACE+ Script Based
Simulations.

68
Toolbars

Python Scripting Buttons

Custom Toolbar Introduction


The customizable toolbar allows you to place shortcuts to your favorite geometry, meshing, and boundary/volume
condition tools in the toolbar area. You can add links to as many tools as you wish, and remove them at any time.

To use a shortcut, simply click it with the left mouse button. Starting a tool in this way has the same effect as
starting it from a toolbox under the Geometry, Meshing, or BC/VC tabs (any picked entities are deselected). In
addition, if the tool resides in a different tab from the current tab, CFD-GEOM switches to the appropriate tab.

Add a shortcut to the custom toolbar


1. Select the appropriate tab (Geometry, Mesh, or BC/VC) in the Control Panel

2. Select the toolbox in which the tool lies

3. Right click on the tool button. In the resulting popup menu, select "Add to custom tool bar" (note that this
option is disabled if the tool bar already contains a shortcut to the tool). A shortcut will appear
immediately on the tool bar, and will appear there each time CFD-GEOM is started.

Remove a shortcut from the custom toolbar


Right click the button in the toolbar that you want to remove.

Remove a shortcut from the custom toolbar using the tool box
1. Click the appropriate tab (Geometry, Mesh, BC/VC) in the Control Panel

2. Select the toolbox in which the tool lies

3. Right click on the tool button. On "Remove from custom tool bar" (note that this option is disabled if the
tool bar does not contain a shortcut to this tool).

69
Chapter 5. Graphics Area

Graphics Area Introduction


The Graphics Area fills the largest portion of the CFD-GEOM user interface and displays the current model in a
Viewer Window. The display consists of a representation of the model, the boundary condition locations, and the
volume condition locations. Multiple selections, deselections, and viewing functions are available. Some objects
also have query menu options for applying particular functions. This section covers the following topics:

Using Viewer Windows


Query Menus
Hot Keys

CFD-GEOM User Interface

71
CFD-GEOM V2014.0 User Manual

Using Viewer Windows


The graphics area can hold multiple viewer windows, which enables you to visualize more than one model at a
time. In addition, you can view an open file in several windows by selecting New Viewer from the Windows menu.
However, only one viewer window can be active at a time. The active viewer window receives all picking
commands.

You can make any viewer window active by clicking on it. The active viewer window appears on top of any other
viewer windows, the Title Bar is highlighted, and the file name displays in the main window’s Title bar. If the file
has been modified, the file name is appended with an asterisk (*).

The Windows menu contains three selections that arrange multiple open windows: Cascade, Tile Horizontally and
Tile Vertically. These commands only affect non-minimized windows.

In addition to the named views (Front View, Back View, etc.), the viewer supports up to ten different quick access
views. To save a view, position the model to the desired view, press and hold the Ctrl key, and select any number
between 0-9. To later restore the view, press and hold the Alt key, and select the desired view by selecting the
corresponding number previously assigned to that view. Subsequent views saved after ten will overwrite the
previous views that were stored.

While performing certain tasks such as the assignment of volume conditions and boundary conditions, use the
mouse to select one or more entities in the viewer window. The active entity is defined as the entity that is under
the mouse cursor at the moment a mouse button is pressed.

Select or pick entities


1. Move the mouse pointer over an entity, hold the mouse steady, and click the left mouse button.

To pick one or several entities, press SHIFT, and drag the mouse to draw a box. All entities within the box
will be picked.

2. To select all pick-able entities, use CTRL+A.

Deselect or unpick an entity


To unpick entities one by one, in the reversed order in which they have been picked, right-click and select Unpick.
Alternatively, you can press CTRL+U to perform the same action.

To unpick one or several entities, you can use CTRL and drag to draw a box. All entities within the box will be
unpicked. Hold down the CTRL key and click a single selected entity to unpick that entity.

To unpick all entities, press the ESC key or Q key.

Note Use the Entity bar buttons to make selecting specific objects easier.

72
Graphics Area

Rotation
You can rotate a model by clicking and holding the left mouse button as you drag the mouse in the viewing area.

Translation
When you are translating a model, the model's movement is proportional to the movement of the cursor. Also, the
initial location of the cursor on the screen is unimportant. In addition, you can view a model from different angles
using the options in the View menu. You can also display the required viewing angle using the buttons on the
Toolbar.

If you are in parallel mode, the model movement is exactly proportional to the movement of the cursor. If you are
in perspective mode, the origin moves proportionally to the cursor; that is, the front of the model (close to the eye)
may move faster, while the back of the model (away from the eye) may move slower.

Translate a model
Click and hold the right mouse button and simultaneously drag the mouse vertically or horizontally.

Zoom
You can choose from several ways to zoom in and out on an area of a model. The cursor location on the screen
where you first press the mouse button is not important for zooming.

In perspective mode, when you control-drag with the right mouse button, it changes the field of view. Move the
cursor downward to decrease the field of view and upwards to increase the field of view.

Zoom in and zoom out using the mouse


1. To zoom in (enlarge) the model, click and hold the middle mouse button (or wheel) and drag the mouse
towards you.

2. To zoom out (reduce) the model, click and hold the middle mouse button (or wheel) and drag the mouse
away from you.

Lasso-Zoom
1. Hold down the shift key.

2. Press the middle mouse button and drag the mouse to lasso the area you want to enlarge.

Query Menus
The graphics area Query menus enable you to view or modify an object's properties. When click right mouse
button in the graphics area, the Query menu opens. The panel varies from object to object, but a few common
options are listed here:

73
CFD-GEOM V2014.0 User Manual

1. The Undo option reverses the last operation, while Redo reapplies a reversed (undone) operation.

2. The viewpoint orientation options, Reset View and Projection, are described in the View Menu.

Hot Keys
Most of the time, you deal with real world problems that are usually 3D. 3D geometries and grid generation can be
difficult to mesh depending on the complexity of the geometry. Working with 3D geometry and grid generation
can be made a lot faster with effective use of the Hot Keys available in CFD-GEOM.

The viewer supports many keyboard shortcuts that facilitate the use of CFD-GEOM. These shortcuts allow you to
rapidly modify the view of the model and also allows for rapid customization of entity picking modes. A list of
available hot keys in CFD-GEOM is given in the following table with their description.

Note For the lasso modes to operate properly, the modifier button, for example., the Ctrl or Shift, must be
pressed at the time the mouse button is released, or the operation will be canceled.

Press these keys... To do this...

Ctrl+q / Ctrl+w - Close CFD-GEOM

Ctrl+g/ Ctrl+f - Reset View

Shift+f - Fit to View

Stored Views (Please see description below for more


Ctrl+# / Alt+# -
details)

Shift+p - Change Projection

Shift+a - Toggle Global Axis

Shift+middle mouse
- Lasso Zoom
drag/release

Shift+left mouse drag/release - Lasso Pick

74
Graphics Area

Press these keys... To do this...

Ctrl+left mouse drag/release - Lasso unpick (works on picked entities)

Ctrl+a - Pick all displayed entities that are pickable

Ctrl+u - Unpick

Ctrl+t - Toogle between blanked/unblanked entities

Shift+left arrow - Pan Left

Shift+right arrow - Pan Right

Shift+up arrow - Pan Up

Shift+down arrow - Pan Down

Up Arrow - Zoom In

Down Arrow - Zoom Out

Wheel Mouse - Zoom In or Out

Left or Right Arrow - Cycle Up or Down between Viewers

Ctrl+z - Undo

Ctrl+y - Redo

q/ Esc - Quit Current Tool

75
CFD-GEOM V2014.0 User Manual

Press these keys... To do this...

Same as Middle Mouse to complete set or validate current


F2 or F12 -
selection

F3 - Cancel

r - Cycle through available picks

p Pick Points only

l Pick Lines only

c Pick Curves only

u Pick Untrimmed Surfaces Only

s Pick Surfaces Only

Pick Discrete Surfaces Only


C
(will be available in V2010)

e Pick Edges only

E Pick Edge Linking Groups only

f Pick Faces only

76
Graphics Area

Press these keys... To do this...

b Pick Blocks (Structured Domains) only

S Pick Shells only

d Pick Unstructured Domains Only

D Pick Semi-Structured Domains Only

F Pick Filaments only

a Pick All

77
Chapter 6. Entity Bar

Overview
The word entity is a generic name for any geometric, structured or unstructured grid element within CFD-GEOM.
Entities include points, lines, curves, surfaces, loops, edges, edge linking groups, faces, blocks, shells, surface sets,
unstructured domains, and filaments.

The entity bar is divided into two areas: Entity Blanking, Unblanking, and Picking and Point Coordinates.

Entity Bar

Entity Blanking, Unblanking, and Picking

Blanking and Unblanking


The entity blanking and unblanking portion of the Entity Bar includes entity buttons that let you blank and unblank
(hide and show) those entities. Blanking is initially in the unblank mode as indicated by the button’s white color. To
blank an entity, click the entity button that you want to blank. The button turns gray to indicate that the entity is
blanked. To unblank the entity, re-click the entity button.

Picking
The bar over each entity button lets you pick (green bar) entities or make them unpickable (red bar). You turn on
picking for all entities by clicking the green bar above the All On button. You turn off picking for all entities by
clicking the red bar above the All Off button. These buttons are useful for quickly restoring the picking state.
Because using the Entity Bar to limit picking can be slow, a shortcut method is provided via the keyboard. The
following list shows the keyboard shortcuts for limiting picking. Notice the distinction between lowercase and
uppercase letters.

Keyboard shortcuts for picking entities

Key Entity Button Description


p Pick points only

l Pick lines only

c Pick curves only

79
CFD-GEOM V2014.0 User Manual

u Pick unused, untrimmed surfaces only

s Pick surfaces only

C Pick discrete surfaces only

Pick pseudo surfaces only

e Pick edges only

f Pick faces only

b Pick blocks only

S Pick shell only

d Pick unstructured domains (solids) only

D PIck semi-structurred domains only

F Pick filaments only

a Pick all on

Hierarchy of Entities
An understanding of the hierarchy of entities is primarily useful for operations such as specialized blanking. Each
entity is assigned an integer which indicates its rank (level) within the entity hierarchy. For any given entity, lower-
level entities are those with a rank less than the rank of the given entity. Similarly, higher-level entities will have a
higher rank than the given entity. The point, with a rank of one, is the lowest level entity. The following table lists
the entities and their ranks.

Hierarchical ranking of entities

Button Entity Rank Color


Point 1 Point Color

Line 2 Line Color

Curve 2 Curve Color

Surface 4 Surface Color

Edge 3 Edge Color

Edge linking group

Face 4 Face Color

80
Entity Bar

Block 6

Shell 5 Point Color

Unstructured 6 Point Color


Domain (Solid)

Filament 3

Grid Buttons
Grid buttons work in conjunction with their corresponding entity buttons. These grid buttons control the display of
grid points on the structured and unstructured topology entities. Grid elements shown in the Entity Bar include
surface sets (SS) and unstructured domains (UD). The SS (shell) button can be used to view shells. This button can
be used only when trimmed surfaces have been grouped into shells. The UD (unstructured domains/solids) button
is usable only when shells have been grouped into unstructured domains/solids.

Note Grid elements cannot be picked; they can only be viewed.

Snap Button
This toggle button allows precise placement of points on the construction plane. When this feature is
active, the intersected point is automatically snapped to the nearest coordinate value as specified via
the plane step size.

Point Coordinates
The Point Coordinates field tailors how points are specified. Select point coordinates by selecting existing points
and entering the desired coordinates. When the mouse is near an existing point the point is highlighted to indicate
that clicking the left mouse button will select the point. Interactive creation of points at the location of the pointer
in the graphics window can be enabled by activating the button Create Point button.

Another way to create points is to enter the X,Y, and Z components, separated by spaces, in the Point Coordinates
field and press Enter.

Note Please ensure that Num Lock and Caps Lock are turned off.

Entity Bar - Snap Button and Point Coordinates Section

81
Chapter 7. Model Manager

Model Manager Overview


The CFD-GEOM Model Manager is a new tool for version 2013that allows you to access and manipulate model
information. By default, the Model Manager is enabled when you run CFD-GEOM. However, you can disable the
Model Manager by clicking the Close button or by unchecking Model Manager under the View menu. To turn the
Model Manager back on, check Model Manager under the View menu. The setting is retained for the next
invocation of CFD-GEOM.

Model Settings
When you select the main level item in the Model Manager, the Model Settings panel displays just below the
Model Manager tree. The Model Settings panel contains the following options: Target Solver, Auto Expand, Auto
Empty Folders, and Model Clipping.

Use the Target Solver to set the solver type either to CFD-ACE or CFD-FASTRAN. (You can also set the Target Solver
from the BC/VC tab and clicking the Problem Type button.)

Check the Auto Expand button (on by default) to automatically navigate to and show the last, single selected item
picked from the graphics window.

Auto Empty Folders contains a table detailing the maximum number of items that the folder can contain. When
the number of items in the containing folder exceeds the specified maximum number, the folder is automatically
emptied—as signified by the folder’s red outline. For example, in the following image the Discrete Surface folder is
outlined in red signifying that, although discrete surfaces are present, the number of surfaces exceeds the
maximum allowable number of items. An item which shows an empty outline indicates that the item is currently
blanked.

Model Clipping restricts picking and also allows you to view the inside structure of a model. Clip the model using
the required clipping plane and the slider value.

83
CFD-GEOM V2014.0 User Manual

Model Manager

Entities
When you select the Entities folder, the Model Settings area is replaced by a summary of the entities present in
the current model. When you click an item contained in a top-level folder under Entities, the area below the Model
Manager tree changes to allow you to rename that item (the name will be the same in the BC/VC editor), specify
its blank or unblank settings, boundary layer settings, boundary or volume conditions and, if the entity supports a
mesh, view its mesh characteristics.

84
Model Manager

Entity Summary Entity Options

To display a context menu for items contained in any of the top-level folders (Solids/Unstructured Domains, Shells,
Semi-Struct, and so forth), select the items of interest and right-click the folder containing the items.

Entity Context Menu

To display a context menu for an individual item, right-click the item. This menu allows quick setting and viewing of
the status of the item’s visibility and boundary layer settings. The item context menu provides options for blanking
and unblanking as well as enabling and disabling the boundary layer, if applicable..

85
CFD-GEOM V2014.0 User Manual

Entity Item Context Menu

Notes

• Selecting an item in the Model Manager tree is subject to the current entity picking type and if the entity
is being shown in the graphics window.

• When selecting and deselecting items, the customary Ctrl+click and Shift+ click combinations apply to
items within a given folder.

• For GEOM 2013.0 solids can have boundary layers enabled or disabled regardless of the shell settings
contained in that solid.

• To remove an assigned name from Entities, select all applicable items and specify “NoName" in the Name
field.

Groups
Items which have the same name are automatically grouped, as shown in the following image. When you select a
group, you can rename the group and all the items within that group. Additionally, a boundary or volume condition
can be applied to all the entities in the group by selecting the required condition from the Boundary/Volume
Condition menu.

Note Specifying the name “NoName” removes the assigned names from all of the entities within that group.

86
Model Manager

Grouping items with the same name

Also, when you right-click a group item a context menu opens that allows a level to be automatically created with
the group name and populated with the entities in that group. All items in the group can be shown, hidden, picked
and unpicked. For those groups which support boundary layers, additional menu items are available to enable and
disable boundary layers on the group items. In addition, the context menu for an item in the group or contained in
the top level group shows and allows setting of its visibility. Each picked item can be individually unpicked or all
items within the top level group can be unpicked.

Group Context Menu Group Context Menu with Boundary Layers Group Item Context Menu

Levels
The Levels folder allows you to create a new, named group. Simply enter the new name in the Name box (below
the Model Manager tree) and press Enter. You can also select an item in a level and rename it, show or hide the

87
CFD-GEOM V2014.0 User Manual

item, set its color, and add or remove currently selected entities into the level. The Level Entity Management
option will only be shown when entities are picked

Create a New Group Using Levels Level Items Options

In addition, you can right-click a level item to open a context menu that allows you to activate or deactivate the
level, show or hide the entities in the level, add or remove entities, and delete the level. Activating a level makes it
the current, active level.

Level item context menu

Mesh Tools
Select the Mesh Tools folder for quick access to the surface meshers, boundary layer mesh specification tool, and
the tetrahedral volume mesh generator. Quick access is also provided to the Mesh Quality Options. In addition,
clicking the button labeled Pick will pick all visible, trimmed surfaces and solids which have not been meshed.

88
Model Manager

Note Access to picking unmeshed entities is also provided from the Advanced Picking option under the Edit menu
and the context menu in the graphics window.

Working with Groups


Groups within the Model Manager tree are created and destroyed implicitly by specifying names; there are no
direct methods to create or destroy a group. Items in one group can be moved to another group simply by
selecting the applicable items and renaming them.

For example, in the following Model Manager tree four of the surfaces have been selected to form a new group
called Outer Boundary. After typing the new name and pressing Enter, a group is automatically created with that
name and populated with those surfaces. Notice that the NoName group is automatically removed and only a
single NoName item remains in the main level Surfaces folder..

89
CFD-GEOM V2014.0 User Manual

Creating a New Group called Outer Boundary New Group Called Outer Boundary

You can also, for example, take one item from the Outer Boundary group and the NoName item and make a new
group called Outlet. To do this, select from the tree or graphics window and set the name as shown in the
following image. The outlet group is created and one Outer Boundary item is removed from its group.

90
Model Manager

Combining items to make a new group New Group Called Outlet

91
CFD-GEOM V2014.0 User Manual

To further illustrate using groups: if one of the items named Outlet is changed to Symmetry then the Outlet group
is destroyed and the tree shows one item named Symmetry and one item named Outlet. To simply rename a group
and any items contained in that group select the group item and specify a new name.

92
Chapter 8. Geometry Tab

Geometry Tab Introduction


The Geometry Tab enables you to access commands for geometric modeling and is located on the control panel.
When you click the Geometry tab, a set of tool buttons appear on the side panel. The buttons enable you to create
and manipulate basic geometric entities such as points, lines, circles, curves, and surfaces. The Geometry panel has
the following tool buttons. When you click a button, more options appear for creating the entity.

Point Creation Tools


Line Creation Tools
Conic Creation Tools
Curve Creation Tools
Surface Creation Tools
Surface Modification Tools
Model Repair Tools
Wireframe/Solid Creation Tools
Transform/Duplicate Entities
Splitting/Joining Tools
Intersection Tools
Discrete Surface Modeling Tools
Miscellaneous Tools

93
CFD-GEOM V2014.0 User Manual

Geometry Panel

Additional ToolTips
Several CFD-GEOM tools that require you to specify a vector (i.e. tools that translate, extrude, or project) support
the specification as Screen Normal. The vector is defined as the perpendicular line from the user to the plane
containing the screen. This vector can be changed by simply rotating the model view.

When previewing or applying a particular operation using screen normals, the newly created entities will appear
behind the entities from which they are created. You will need to rotate the model view in order to see them.
However, in doing so, you will change the vector representing the screen normal. This can present a problem when
you are attempting to preview the operation. To prevent this problem, it is recommended that you first rotate
your model view to finalize the screen normal vector that you will be using. Then, select the Vector button. This

94
Geometry Tab

will freeze the current view vector (shown in the accompanying Vector X Y Z text field). You can then rotate your
model view and preview changes to any other parameters (such as extrusion distance) particular to the operation.

Point Creation Tools

Point Creation Tools


The Point Creation tools enable you to create points. To create a point, click the Point tool in the Geometry
toolbox. The options for creating points, from right to left, are:

Coordinates/Screen Pick
Point Editor
Points + Offset
Average Point
Curve/Curve Intersection
Curve/Surface Intersection
Surface/View Intersection
Closest Points
Parametric Point
Filter Points Locally
Equate Points

95
CFD-GEOM V2014.0 User Manual

Point Creation Buttons

Coordinates/Screen Pick
The Create Point tool enables you to create points in the current construction plane using current Point Creation
Mode.

Coordinates/Screen-Pick Button

96
Geometry Tab

Point Creation Panel

Point Coordinates Field

Create a point
1. Click the Coordinates/Screen-Pick button in the Point toolbox. The Point Creation panel appears and
the Status line prompts you to create a point by entering XYZ values or using the point creation mode.

2. Select one of the following options to create the point locations:

3. Enter the XYZ values in the X, Y, Z fields and click Preview to preview the point. Click Apply to create the
point.

4. Click the Point Coordinates point tool in the Entity Bar (the upward arrow). Click on the graphics area to
create the point at the location of your choice. Click Preview to preview the point. Click Apply to create
the point.

5. Enter the point coordinates in the Point Coordinates field in the Entity Bar, separating each coordinate
with a single space (e.g. 50 30 10). Press Enter after the last coordinate.

Point Editor
The Point Editor allows you to modify the X, Y, and Z coordinates of the selected point.

Point Editor Tool

97
CFD-GEOM V2014.0 User Manual

Point Editor Panel

Edit a point location


1. Select the Point Editor tool.

2. Select the point to the modified.

3. Make any modifications to the X, Y, and Z locations.

4. Click Preview to view the changes before applying them.

5. Click Apply when the new point locations have been entered.

Point + Offset
The Point + Offset tool enables you to create a set of points by specifying X, Y, and Z coordinates of the first point,
and creating other points by entering the delta distance from the previous one.

Point + Offset Button

Point Offset Panel

Create an offset point


1. Click the Point + Offset button in the Point toolbox. The Point Offset panel appears and the Status
Line prompts you to select a point.

2. Select a point in the graphics area.

98
Geometry Tab

3. Enter the Delta XYZ coordinates.

4. Click Preview to preview the point. Click Apply to create the point.

Average Points
The Average Points tool uses a given set of points to generate a new point by averaging the X, Y, and Z components
of the set's input points.

Average Point Button

Average Point Panel

Create an average point


1. Click the Average Point button in the Point toolbox. The Point Average panel appears and the Status Line
prompts you to select points.

2. Click the Replace Points box in the Point Average panel if you want to replace the existing points with
the averaged point.

3. Select the points you want to average in the graphics area.

4. Click Preview to preview the new averaged point. Click Apply to create the point.

Curve/Curve Intersection
The Curve/Curve Intersection tool enables you to pick two intersecting lines (curves) and create a point at their
intersection.

Curve/Curve Intersection Button

99
CFD-GEOM V2014.0 User Manual

Curve/Curve Intersection Panel

Create a point at the intersection of two curves


1. Click the Curve/Curve Intersection button in the Point toolbox. The Curve/Curve Intersection panel
appears and the Status Line prompts you to select two intersecting curves.

2. Select the two intersecting curves in the graphics area.

3. Click Preview to preview the point. Click Apply to create the point.

Curve/Surface Intersection
The Curve/Surface Intersection tool enables you to create a point at the intersection of a curve and a surface. To
use this option, a curve and a surface need to be specified.

Curve/Surface Intersection Button

Curve/Surface Intersection Panel

Create a point at the intersection of a curve and a surface


1. Click the Curve/Surface Intersection button in the Point toolbox. The Curve/Surface Intersection
panel appears and the Status Line prompts you to select and point and a surface.

2. Select the point and the surface in the graphics area.

3. Click Preview to preview the point. Click Apply to create the point.

Surface/View Intersection
The Surface/View Intersection tool creates points by intersecting the current viewing vector with a previously
specified surface; for version 2013.0 discrete surfaces are supported in addition to the traditional CAD surfaces.

100
Geometry Tab

After selecting the surface you can move the mouse across the surface and the points of intersection with the
surface will be shown dynamically. The intersection point is constrained to the surface and is also dependent upon
the current view of the model.

Surface/View Intersection Button

Surface/View Intersection Panel

View a vector to surface intersection point


1. Click the Surface/View Intersection button in the Point toolbox. The Surface/View Intersection panel
appears.

2. Select the surface in the graphics area.

3. As the mouse is moved over the surface, the intersection points are highlighted and its coordinates
are displayed

4. Click the middle mouse button to create the point.

Closest Points
The Closest Points tool computes the closest points of approach between two curves or a curve and surface. Two
points will be created, but if the shortest distance between the two entities is less than geometric precision, only
one point will be created. In this case, the behavior is similar to the curve to curve and curve to surface
intersection tools.

Closest Points Button

Closest Points Panel

101
CFD-GEOM V2014.0 User Manual

Determine the closest points of approach


1. Click the Closest Points button in the Point toolbox. The Closest Points panel appears and the Status
Line prompts you to select points.

2. Select the two points in the graphics area.

3. Click Preview to preview the point. Click Apply to create the point.

Parametric Point
The Parametric Point tool creates parametrically defined points on entities such as lines, curves and surfaces. It
requires two inputs: a line, curve, or surface, and parametric values at which to create the point

Parametric Point Button

Parametric Point Panel

Create a point in parametric space


1. Click the Parametric Point button in the Point toolbox. The Parametric Point panel appears and the
Status Line prompts you to select a point.

2. Select the point in the graphics area.

3. Enter the U Value and V Value in the Parametric Point panel.

4. Click Preview to preview the point. Click Apply to create the point.

102
Geometry Tab

Filter Points Locally


The Filter Points Locally tool allows the user to select two or more points and then apply a filter to the points
within a prescribed precision. The filter acts by equating points for which the absolute distance between the points
is less than or equal to the prescribed precision. The prescribed precision is arbitrary and may be different than the
global model precision. The selection of two or more points causes the maximum distance among the collection of
points to be displayed thus, providing information towards a valid filtering precision. The up-arrow button, located
just below the filter precision input, is provided as a convenience which sets the precision just slightly larger than
the maximum distance.

Filter Points Locally Button

Filter Points Locally Panel

Filter a point locally


1. Click the Filter Points Locally button in the Point toolbox. The Filter Points Locally panel appears and
the Status line prompts you to select any number of points to which the filter will be applied.

2. Select the desired points and the maximum distance field will update to the current maximum among
all the selected points.

3. Specify the desired precision either manually or press the up-arrow button for a precision just slightly
larger than the maximum distance.

4. Either press Apply or middle-mouse to complete the operation.

Equate Points
The Equate Points tool allows the user to select two or more points which will be set to the same X,Y, and Z
coordinate of the first selected point.

103
CFD-GEOM V2014.0 User Manual

Equate Points Button

Equate Points Panel

Equate points
1. Click the Equate Points button in the Point toolbox. The Equate Points panel appears and the Status
line prompts you to select a single point to which all subsequent point selections will be equated.

2. Select the desired point and then all of the other desired points which will be moved to the first
point.

3. Either press Apply or middle-mouse to complete the operation.

Line Creation Tools

Line Creation
The Line Creation tools enable you to create line segments. To create a line, click the Line tool in the Geometry
toolbox. The options for creating lines, from right to left, are:

Create Line(s)
Extend Line
Parallel Line
Perpendicular Line
Tangent Line
Tangent Line at Point
Line Normal to Surface
Create Line from Curve

104
Geometry Tab

Line Creation Buttons

Create Line
The Create Line tool enables you to create a line or lines. The begin and end points of the line segment are
specified by two points and from these two points, a line is created.

Create Line Button

Create Line Panel

105
CFD-GEOM V2014.0 User Manual

Create a line
1. Click the Create Line(s) button in the Line toolbox. The Create Line(s) panel appears and the Status
Line prompts you to select the first point of the line.

2. Create the points using one of the following methods:

• Enter the line's point coordinates in the Point Coordinates field in the Entity Bar and click the
middle mouse button to complete the set; for example,

• 0, 0, 0 - Represents coordinates for Point A. After entering the coordinates, press


Return.

• 10, 0, 0 - Represents coordinates for Point B. After entering the coordinates, press
Return.

• Click on the Point Coordinates upward arrow, then click in the graphics area to create
the two points for the line.

• Click Preview to preview the line. Click Apply or the middle mouse button to keep the line, or
Cancel to start over.

Extend Line
The Extend Line tool enables you to extend a line.

Extend Line Button

Extend Line Panel

Extend a line
1. Click the Extend Line button in the Line toolbox. The Extend Line panel appears and the Status Line
prompts you to select a line and endpoint.

2. Select a line and one of its endpoints.

106
Geometry Tab

3. Enter the length you want to extend the line in the Extend Length field of the Extend Line panel. The line
is extended at that point along a vector direction specified by the line's begin point and end point.

4. Click Preview to preview the extended line. Click Apply to extend the line.

Parallel Line
The Parallel Line tool enables you to create one or more lines through one or more selected points so that the lines
are parallel to a specified direction.

Parallel Line Button

107
CFD-GEOM V2014.0 User Manual

Parallel Line Panel

Create a parallel line


1. Select the Parallel Line button in the Line toolbox. The Parallel Line panel appears and the Status Line
prompts you to pick the point through which the line will pass.

2. Select one or more points through which the lines are to pass.

3. Click the middle mouse button to complete the set. The points turn red.

4. The Status Line prompts you to select one of the following line direction modes:

X - Create line on the X-axis. This option activates an additional portion of the panel so you can
specify the +/-ve distance.

108
Geometry Tab

Y - Create line on the Y-axis. This option activates an additional portion of the panel so you can
specify the +/-ve distance.

Z - Create line on the Z-axis. This option activates an additional portion of the panel so you can specify
the +/- ve distance.

Existing line - Use the existing selected line to crate the parallel line.

Point-Point - Enables you to pick two point entities to define your line. After picking two points, the
vector is defined as the vector between the first and second picked points.

Vector - Enables you to define the line vector. If you select the Vector option, the text field showing
the current extrusion vector becomes active. Note that it is not necessary to normalize the vector
yourself.

Screen Normal - Creates a line in a direction normal to the screen. This vector can be changed by
rotating the model view. Note that the vector points INTO the screen when you use this option. Also
note that for all of these options, it is not necessary for the vector to be expressed as a normalized
vector. CFD-GEOM will automatically normalize the vector when it actually creates the parallel line.

5. Click Preview to view the parallel line or Apply to create the parallel line. A yellow parallel line is
created.

Perpendicular Line
The Perpendicular Line tool is similar to the Parallel Line option except that the created line is perpendicular to the
first-selected line and is drawn parallel to the construction plane and through the selected point. Alternately, the
newly created line can be drawn through the point and perpendicular to the construction plane by selecting the
Perpendicular to Construction Plane check box.

Note For all of the line creation options, points can be specified by any of the point creation modes, i.e., Pick
Existing, Create Point, or Enter XYZ.

Another way to create a line parallel to another line is to use the Translate option when the button Duplicate is
checked.

Perpendicular Line Button

109
CFD-GEOM V2014.0 User Manual

Perpendicular Line Panel

Create a perpendicular line


1. Click the Perpendicular Line button on the Line toolbox. The Perpendicular Line panel appears and
the Status Line prompts you to select one or more points.

2. Select one or more points through which the lines are to pass.

3. Click the middle mouse button to complete the set.

4. Specify the direction and distance. Available options for specifying the direction include parallel to X,
Y, or Z axes; parallel to existing Line; parallel to vector defined by 2 points; parallel to user-defined
vector; and parallel to screen normal.

110
Geometry Tab

• If you select Existing Line, you will be prompted to select an existing line.

• If you select Point-Point, you will prompted to select two points that define the direction.

5. Specify the +ve and -ve distances. These determine how far the lines are to extend in the forward and
reverse directions, respectively, along the direction vector. Default values for these are roughly based
upon the amount of the model that is currently visible on the display. These values may be positive
and/or negative.

6. Check the Perpendicular to Construction Plane box if you want the line to be perpendicular to a
construction plane.

7. Select Preview to preview the new lines and Apply or the middle mouse button to complete the
operation.

Tangent Line
The Tangent Line tool creates a line, tangent to a curve, at a parametric location on the curve.

Tangent Line Button

Tangent Line Panel

Create a tangent line


1. Click the Tangent Line button in the Line toolbox. The Tangent Line panel appears and the Status Line
prompts you to select a curve.
2. Select a curve from the graphics area.

111
CFD-GEOM V2014.0 User Manual

3. Use the U Value slider to position the line at the desired location.
4. Control the length of the line by entering the distance:

-ve distance specifies the distance of the line's start point from the point of tangency.

+ve distance has a similar effect of the line's end point.

5. Click Apply or middle mouse button to complete the operation. The new line's orientation will be similar
to that of the curve.

Tangent Line at Point


The Tangent Line at Point tool creates a line, tangent to a curve, through a point entity. Note that it is not
necessary for the point to lie on the curve.

Tangent Line at Point Button

Tangent Line at Point Panel

Create a tangent line at a point


1. Click the Tangent Line at Point button in the Line toolbox. The Tangent Line at Point panel appears
and the Status Line prompts you to select a curve.

2. Select a curve in the graphics area.

3. Select a point in the graphics area. CFD-GEOM will find the point on the curve that is closest to the
selected point. It then computes the tangent vector at that point and creates a line with the
computed direction through the selected point.

4. Control the length of the line by entering the distance:

112
Geometry Tab

-ve distance specifies the distance of the line's start point from the point of tangency.

+ve distance has a similar effect of the line's end point.

5. Click Apply or middle mouse button to complete the operation. The new line's orientation will be
similar to that of the curve.

Line Normal to Surface


The Line Normal to Surface tool allows the user to create a line normal to a surface at a given point. Ideally, the
selected point should lie on the surface however, in the case where the point is off the surface the nearest point
on the surface is located and the associated parameter values are used in the computation of the surface normal.

Line Normal to Surface Button

Line Normal to Surface Panel

Create a line normal to a surface


1. Click the Line Normal to Surface button in the Line toolbox. The Line Normal to Surface panel appears
and the Status Line prompts you to select a surface.

2. Select a surface from the graphics area.

3. Next the Status Line prompts for the selection of a point at which to create the normal line; select the
desired point and a preview line will be displayed in the graphics area.

4. The -ve distance specifies the distance of the line's start point from the indicated point while +ve
distance has a similar effect of the line's end point.

5. Click Apply or middle mouse button to complete the operation.

113
CFD-GEOM V2014.0 User Manual

Create Line from Curve


The Create Line from Curve tool converts a curve to a line. Any curvature in the curve will be lost, so this tool
should only be applied in cases where the curve is straight, or when its curvature is not important. Any geometry
entities, topology entities, or grids will be automatically updated. Converting curves to lines can be useful when
the line will be used as an axis in other tools (such as rotation). Note that in these tools, a curve cannot serve as an
axis.

Create Curve from Line Button

Create Line from Curve Panel

Create a line from a curve


1. Click the Curve > Line button in the Line toolbox. The Convert Curve to Line panel appears and the
Status Line prompts you to select a curve.

2. Select a curve from the graphics area.

3. Click Apply or the middle mouse button to complete the operation. The new line will be created from
the curve.

Conic Creation Tools

Conic Creation
The Conic Creation tools enable you to create circles, ellipses, and parabolas. To create a conic, click the Conic
Creation tool in the Geometry toolbox. The options for creating conics, from bottom to top, are:

3 Point Circle
2 Point Circle
2 Point, Radius Circle
Center-Point/Radius Circle
3-Point Arc
Center-Point/Radius Arc
Ellipse
Parabola

114
Geometry Tab

Conic Creation Buttons

3-Point Circle
The 3-Point Circle tool puts a circle through three points specified by one of the point creation modes.

3-Point Circle Button

3-Point Circle Panel

Create a three-point circle


1. Click the 3-Point Circle button in the Conic toolbox. The 3-Point Circle panel appears and the Status
Line prompts you to select points.

2. Select three points in the graphics area and click the middle mouse button to complete the selection.

3. Click Apply and the circle will be created from the three points.

115
CFD-GEOM V2014.0 User Manual

2-Point Circle
The 2-Point Circle tool creates a circle by specifying two points. The first point specifies the center of the circle
while the second specifies the radius. The option is designed to be used within the current construction plane.
Points that do not lie on the current plane will yield arbitrary circles constrained to the current construction plane.

2-Point Circle Button

2-Point Circle Panel

Create a two-point circle


1. Click the 2-Point Circle button in the Conic toolbox. The 2-Point Circle panel appears and the Status Line
prompts you to select two points.

2. Select the first of two points in the graphics area and click the middle mouse button to complete the
selection.

3. Click Apply and the circle will be created from the two points.

2-Point, Radius Circle


The 2-Point, Radius Circle tool creates a circle by the specification of two points which should be on the circle. The
option is designed to be used within or parallel to the current construction plane. The specified points must lie on
the same plane. The radius must be greater than 0 and it also, must be greater than or equal to half the distance
between the two points. Secondly, there are two possible circles thus, the user can select between them by
clicking the "Invert" check button.

2-Point, Radius Circle Button

116
Geometry Tab

2-Point, Radius Circle Panel

Create a two point, radius circle


1. Click the 2-Point, Radius Circle button in the Conic toolbox. The 2-Point radius Circle panel appears
and the Status Line prompts you to select two points.

2. Select the two points; optionally, set the desired radius and the desired circle by the "Invert" check
button.

3. Press Apply, click the middle mouse button, or press F2 to create the circle.

Center-Point/Radius Circle
The Center-Point/Radius Circle tool creates a circle from a specified center point and a specified radius. The Conic
is created in a plane parallel to the current construction plane.

Note For structured grid generation, complete circles are not practical. The Conic ends up being split into two or
four arc segments for gridding purposes, although a circle will retain parametric information about its creation,
which can be easily modified. The best method for creating arc segments is to revolve a point around an axis.

CPT Radius Circle Button

Center-Point/Radius Circle Panel

117
CFD-GEOM V2014.0 User Manual

Create a center-point, radius circle


1. Click the Cpt-Rad Circle button in the Conic toolbox. The Center-Point/Radius Circle panel appears
and the Status Line prompts you to select a center point.

2. Select a point in the graphics area or create a point by clicking the Point Coordinates point tool in the
Entity Bar (the upward arrow) and either clicking in the graphics area or entering the X, Y, Z
coordinates in the Point Coordinates field.

3. Specify the radius in the Radius section of the Center-Point/Radius Circle panel.

4. Click Apply or middle mouse button to complete the operation. The circle will be created from the
point based on the radius you have set.

3-Point Arc
The 3-Point Arc tool creates an arc from three specified points.

3-Point Arc Button

3-Point Arc Panel

Create a three point arc


1. Click the 3-Point Arc button in the Conic toolbox. The 3-Point Arc panel appears and the Status Line
prompts you to select points.

2. Select three points in the graphics area and click the middle mouse button to complete the selection.

3. Click Apply. The arc will be created through those three points.

Center-Point/Radius Arc
The Center-Point/Radius Arc tool creates an arc of a specified radius between specified start and end angles using
a selected point as the center point.

Note Arcs can be efficiently created by specifying an axis of revolution and a point, and revolving that point
around the axis.

118
Geometry Tab

Center-Point/Radius Arc Button

Center-Point/Radius Arc Panel

Create an arc from a selected center point


1. Click the Cpt-Rad Arc button in the Conic toolbox. The Center-Point/Radius Arc panel appears and the
Status Line prompts you to select a point as the center point for the arc.

2. Select a center point in the graphics area or enter the point coordinates in the Point Coordinates field
of the Entity Bar. Be sure to put a space between each of the X, Y, and Z coordinates, e.g. 30 10 20.

3. With the point selected, enter the arc's radius, start angle, and end angle in the Arc->Cpt-Radius
window.

4. Click Apply or middle mouse button to complete the operation. The arc is created in a plane parallel
to the current construction plane.

Ellipse
The Ellipse tool creates an ellipse from a specified center point and specified major and minor radii. The ellipse is
created in (or parallel to) the current construction plane.

Ellipse Button

119
CFD-GEOM V2014.0 User Manual

Ellipse Panel

Create an ellipse
1. Turn on journaling by one of the following methods:
2. Select the Journaling option from the Tools menu.
3. Select Edit Menu -> Preferences option -> Tools tab -> click on the Journaling box - >click OK.
2. Click the Ellipse button in the Conic toolbox. The Elliptical Arc panel appears and the Status Line prompts
you to select a point.
3. Select a center point from the graphics area or enter the point coordinates in the Point Coordinates field
in the Entity Bar.
4. Enter the major radius, minor radius, start, and end angles in the Elliptical Arc panel.
5. Click Preview to preview the ellipse and Apply to apply the parameters.

Parabola
The Parabola tool creates a parabola using three designated points.

Parabola Button

Parabola Panel

120
Geometry Tab

Create a parabola
1. Click the Parabola button in the Conic toolbox.

2. Select three points in the graphics area and click the middle mouse button to complete the selection.
The parabola appears based on your selections.

Curve Creation Tools

Curve Creation
The Curve Creation tools enable you to create curves. To create a curve, click the Curve tool in the Geometry
toolbox. The options for creating curves, from right to left, starting at the top, are:

Interpolation Curve
Blend Curve
Fillet Curve
Curve on Surface
Offset Curve
Average Curve
Average Curve Sets
Helix Curve
Bezier Curve
Reduce Curve
Minimize Curves
Reshape Curve/Line

121
CFD-GEOM V2014.0 User Manual

Curve Creation Buttons

Interpolation Curve
The Interpolation Curve tool creates an interpolating curve through all specified points.

Interpolation Curve Button

Interpolation Curve Creation Panel

122
Geometry Tab

Create an interpolating curve


1. Click the Interpolation Curve button in the Curve toolbox. The Interpolation Curve Creation panel
appears and the Status Line prompts you to pick the points from which to interpolate.

2. Select the points in the graphics area and click the middle mouse button to complete the selection.

3. Click the Closed box if you want the curve to be closed.

4. Click the Preview button to preview the curve and Apply or the middle mouse button to apply the
parameters. The curves are automatically generated.

Blend Curve
The Blend Curve tool generates a new curve by connecting the endpoints of two curves.

Blend Curve Button

Blend Curve Panel

Create a blended curve


1. Click the Blend Curve button in the Curve toolbox. The Blend Curve Creation panel appears and the
Status Line prompts you to select endpoints.

2. Select an endpoint from each of the curves you want to blend from the graphics area, and click the
middle mouse button to complete the selection.

3. Click the Preview button to preview the curve and Apply to apply the parameters. The new curve is
generated by fitting a fourth-order polynomial between the selected endpoints.

Fillet Curve
The Fillet Curve tool enables you to create fillet curves.

Fillet Curve Button

123
CFD-GEOM V2014.0 User Manual

Fillet Curve Creation Panel

Create a fillet curve


1. Click the Fillet Curve button in the Curve toolbox. The Fillet Curve Creation panel appears and the
Status Line prompts you to select curves.

2. Select two curves from the graphics area.

3. Specify their endpoints and points on the two curves to serve as endpoints for the fillet.

4. Adjust the location of the endpoints for the fillet to generate either a circular or conic approximation
for the fillet.

5. Click the Preview button to preview the curve and Apply to apply the parameters. The fillet curve is
created.

You can also create a fillet curve by checking the box labeled Specify Radius and selecting two intersecting line
segments. The lines are treated as infinite rays and do not have to intersect over the length of the original line
segments. The radius parameter may be adjusted to obtain the desired circular arc fillet which will be tangent to
both lines. Specifying an unreasonable radius value will generate a fillet curve that is outside the bounds of the
lines.

Curve On Surface
The Curve On Surface tool enables you to pick a surface and change the parameters of the two end points to
obtain a curve that will then be defined on that surface. The existence of a surface is a prerequisite for this
function. A curve on a surface is similar to a parametric point.

124
Geometry Tab

Curve on Surface Button

Curve On Surface Panel

Create a curve on a surface


1. Click the Curve On Surface button in the Curve toolbox. The Curve On Surface panel appears and the
Status Line prompts you to select a surface.

2. Select a surface in the graphics area and click the middle mouse button to complete the selection.

3. Enter the U1 and V1 values for the first point in the Point 1-Parameters fields.

4. Enter the U2 and V2 values for the second point in the Point 2-Parameters fields.

5. Enter a number for curve discretisation in the Curve Discretisation field.

6. Click the Preview button to preview the curve and Apply to apply the parameters. The curve on a
surface is generated.

125
CFD-GEOM V2014.0 User Manual

Offset Curve
The Offset Curve tool enables you to create offset curves by picking a curve and specifying an offset distance in a
given direction. The curve gets duplicated at the offset distance in the given direction, thus providing a thickness
parameter for the geometry. You are cautioned against using large offset values while using this method. The
offset distances should not be over 5% of the curve length (end-to-end curve length).

Offset Curve Button

Offset Curve Panel

Create an offset curve


1. Click the Offset Curve button in the Curve toolbox.

2. Select a curve in the graphics area.

3. Click the middle mouse button to complete the selection. The curve is duplicated at an offset
distance.

126
Geometry Tab

Average Curve
The Average Curve tool enables you to create a curve as an average of two curves with shared endpoints. This tool
enables you to replace two or more curves sharing common endpoints with a single curve. All loops, edges, etc.
that use these curves are automatically updated to use the new curve. This capability can be extremely useful for
closing gaps in dirty imported geometries. Please note that the curves should be similar to each other within a
reasonable tolerance. Replacing very dissimilar curves with an average curve may result in a new curve that does
not lie on either adjacent surface (if such surfaces are present). This can lead to surface mesh generation
problems.

Average Curve Button

Average Curve Panel

Create an averaged curve


1. Click the Average Curve button in the Curve toolbox. The Curve Average panel appears.

2. Select two curves with shared endpoints from the graphics area.

3. Enter the curve discretisation figure in the Curve Discretisation section of the panel.

4. If you want to replace the existing curves with the new curve, click the Replace Curves box.

5. Click the Preview button to preview the curve and Apply to apply the parameters. The single,
averaged curve is created.

Average Curve Sets


The Average Curve Sets tool enables you to create a single curve by averaging two sets of possibly disjointed
curves.

Average Curve Sets Button

127
CFD-GEOM V2014.0 User Manual

Average Curve Sets Panel

Create an averaged curve set


1. Click the Average Curve Sets button in the Curve toolbox. The Curve Sets Average panel appears.

2. Select two curves with shared endpoints from the graphics area and click the middle mouse button to
complete the set.

3. Click the Reverse box of needed. Because the two curves may be disjointed, (not connected at their
endpoints), there is no fool-proof method to determine the running direction of the two curve sets
with respect to one another. Therefore, the Reverse option may be chosen to reverse the running
direction of the second curve. After choosing this option, you can either click Preview or select the
next curve within the set to observe its effect.

4. Enter the curve discretisation number in the Curve Discretisation section of the panel. The curve
discretisation field enables you to set the number of points used for the discretisation of the input
curve sets in order to create an average curve.

5. Select a second set of curves and click the middle mouse button. During the second set selection
process the averaged curve is shown in preview mode.

6. Click the Preview button to preview the curve or Apply to apply the parameters. The averaged curve
set is created.

Helix Curve
The Helix Curve tool enables you to create helix curves by specifying a begin point that implicitly defines the radius,
the axis of the helix, and the pitch (the distance along the axis for one turn of the helix). An additional input,
number of quadrants can also be specified if this is known (default is four quadrants or 360 degrees).

Helix Curve Button

128
Geometry Tab

Helix Curve Panel

Bezier Curve
The Bezier Curve tool enables you to specify the control points that design the curve. The Bezier Curve is a cubic
curve constructed by four points.

Bezier Curve Button

129
CFD-GEOM V2014.0 User Manual

Bezier Curve Panel

Create a Bezier curve


1. Click the Bezier Curve button in the Curve toolbox. The Bezier Curve panel appears and the Status
Line prompts you to select endpoints.

2. Select two end points in the graphics area.

3. Select two control points from the graphics area. The location of the first control point is taken as the
mouse position on the construction plane and the curve dynamically changes shape as the control
point location is modified.

4. Click the Preview button to preview the curve and Apply to apply the parameters. The Bezier curve is
generated. As shown in the figure below, two points are end points (P1, P4) and two are control
points (P2, P3). The curve does not pass through any of the control points except the first and last and
has end slopes which are tangent to the imaginary line between P1, P2 and P3, and P4.

Bezier Curve

Reduce Curve
Certain geometric tools, such as surface to surface intersection, generate a number of control points when clearly
a fewer number would suffice. The Reduce Curve tool enables you to reduce the number of control points that
define the curve geometrically, and can lead to savings in memory and computational resources. The reduction
tolerance parameter sets an absolute accuracy of the variance between the reduced and original curve at pre-
determined locations along the curve. Higher values of the reduction tolerance tend to remove more control
points at the expense of geometric fidelity.

Reduce Curve Button

130
Geometry Tab

Reduce Curve Panel

Reduce a curve
1. Click the Reduce Curve button in the Curve toolbox. The Reduce Curve Control Points panel appears
and the Status Line prompts you to select a curve.

2. Select the curve you want to reduce in the graphics area and click the middle mouse button to
complete the selection.

3. Set the reduction tolerance in the Tolerance section of the panel.

CAUTION: It is highly recommended that you set a reduction tolerance and use the Preview feature
to gauge the final result because setting a large value for this parameter can destroy the original
geometric characteristics of the curve.

4. Click the Preview button to preview the curve and Apply to apply the parameters. The curve is reduced.

Minimize Curves
The Minimize Curves tool, located under the Curve Creation toolbox, allows you to reduce the number of lines and
curves in a model by automatically joining those that satisfy an angular transition threshold and topological
constraints. This can be particularly useful when you need to

• Eliminate small curves that unnecessarily increase local mesh density. These are often imported from CAD
models; they are usually generated by modeling functions in various CAD systems and are usually not
inserted intentionally by the CAD user. Mesh generation involving such lines/curves often results in
unnecessary mesh clustering and poor quality triangles and/or quads on any attached surfaces.

• Reduce the number of boundary conditions in a complex 2-D model.

Minimize Curves Button

131
CFD-GEOM V2014.0 User Manual

Minimize Curves Panel

To use this tool, select any number of lines and/or curves and press the middle-mouse or Apply button; only those
selected entities will go into the pool of lines/curves to be processed. Alternatively, you can press the middle-
mouse or Apply button without selecting any entities. In this case, all lines/curves in the model will go into the
pool. Once a pool of lines/curves has been specified, CFD-GEOM will automatically join lines/curves, where
possible, subject to the following constraints:

• Lines/curves to be joined must be properly connected, end-to-end, with no branches.

• Exactly the same set of child (higher-level) entities must be derived from them. For example, CFD-GEOM
will not join 2 curves that are used by 2 different Edge entities, or that do not trim the same surfaces.

• No two lines/curves will be joined where the angular transition at their shared endpoint exceeds the input
angle threshold.

After joining as many lines/curves in the pool as possible, the modifications are propagated to all entities derived
from them (i.e. the model is updated). When finished, CFD-GEOM will report the number of new curves as well as
the number of lines/curves that were replaced.

Tip Prior to using this tool, it is often helpful and/or necessary to combine surfaces (add link to Combine Surfaces
tool) in the vicinity of small curves in order to satisfy constraint #2 described above.

Reshape Curve/Line
Use the Reshape Curve tool to specify a change in the shape of existing curves and lines. You specify source points
on the curve or line and their locations such that the curve or line passes through those points. The source point
does not necessarily have to lie on the entity as it will be projected onto the entity prior to the reshaping
operation.

Reshape Curve/Line Button

Reshape Curve/Line Panel

132
Geometry Tab

Reshape a curve
1. Click the Reshape Curve/Line button in the Curve toolbox. The Reshape Curve/Line panel appears and the
Status Line prompts you to select a curve.

2. Select the curve or line you want to reshape in the graphics area.

3. The Status Line prompts for pairs of points that specify the source and target points. Once the source and
target pairs are selected and the desired curve shape has been achieved click the Apply button to reshape
the curve.

The following images show an example of a curve reshape operation. The image to the left shows a circle with
green points that lie on the circle; the blue points are locations that the deformed curve should pass through. The
image on the right shows, in green, the curve that would be generated if the green (source) points are relocated to
the blue (target) point locations.

Tip Prior to using this tool, it may be helpful to reduce control points on curves where desired shapes are not
being achieved.

Surface Creation Tools

Surface Creation
The Surface Creation tools enable you to create surfaces. To create a surface, click the Surface tool in the
Geometry toolbox. The options for creating surfaces, from right to left, starting at the top, are:

Fit Through Curves

Advanced Covering

133
CFD-GEOM V2014.0 User Manual

Extruded Surface

Revolved Surface+

Swept Surface

Lofted Surface

4-Sided Surface

Offset Surface

Surface on Face

Untrimmed −> Trimmed

Trimmed -> Untrimmed

Surface Creation Button

134
Geometry Tab

Introduction to Surfaces
Fundamental to modeling and meshing in CFD-GEOM is an understanding of Surface entities. Though it is possible
to model and mesh solids without traditional CAD surfaces (e.g. via structured meshing and/or discrete
geometries), most models contain at least some CAD surfaces, and many models are defined exclusively by CAD
surfaces. CAD surfaces are those surfaces that one normally encounters in a CAD system and which can be
exported to geometry file formats such as IGES, SAT, Parasolid, STEP, and others. In CFD-GEOM, such surfaces can
be imported from these formats or created with CFD-GEOM’s many surface modeling tools.

In CFD-GEOM, such entities are referred to as Trimmed Surfaces or simply Surfaces. A Trimmed Surface entity
consists of an Untrimmed Surface entity and a set of bounding curves. The reason for the distinction between
trimmed and untrimmed surfaces is that untrimmed surfaces alone do not provide enough flexibility to model
arbitrary shapes and do not provide any mechanism for topologically connecting surfaces to each other. An
untrimmed surface provides the mathematical definition of a surface, giving its general shape, orientation, and
location. It may be unbounded, such as a plane or unbounded cylinder—or mathematically bounded, such as a
sculpted spline surface. In addition, mathematically bounded surfaces must generally have 4, 3, or 2 sides—thus
limiting their ability to be used to directly construct arbitrary n-sided surfaces and to model holes in surfaces. In
other words, untrimmed surfaces alone usually cannot be used to represent the region of interest (i.e. the area
you wish to mesh). Consider an infinite plane (e.g. the XY plane). Suppose that you wish to create the following
surface in that plane:

Such a configuration is not possible using the untrimmed plane alone for 2 reasons. First, the plane contains no
outer boundary. Second, the equation for a plane (nor any spline approximation thereof) does not allow for the 2
holes. Trimmed Surface entities circumvent this problem by adding an additional component—bounding curves,
also known as trimming curves. In the above example, a set of 4 boundary curves defines the outermost extents of
the region of interest. Two sets of boundary curves (the circles) define the innermost bounds of the region of
interest. Besides defining the region of interest on the surface, these bounding curves provide a topological
connection between the surfaces that share them. This is essential for constructing solids and for ensuring mesh
continuity across surfaces.

Ordinarily, you will not need to interact directly with untrimmed surfaces. There are 3 notable exceptions. First,
when reading dirty CAD models, each failed surface is inserted into a level consisting of the untrimmed surface and
the bounding curves. After some kind of cleanup step, you will need to apply those curves to the surface. Consider
the following failed surface (left). It consists of an untrimmed planar surface (orange) and 4 curves. Note that the 2
inner curves do not form a properly closed set, and thus cannot be used as an inner bound on the region of
interest. After identifying this collection of entities in the Level Editor, you can repair the gap. Many tools, such as
the “Equate Points” tool, can be used for this purpose. After fixing the gap you can build the surface. The quickest
is to invoke the Advanced Trimming Tool, select the untrimmed surface, select the 4 curves, and press Apply. The
result is the trimmed surface on the right.

135
CFD-GEOM V2014.0 User Manual

Another circumstance which may require direct interaction with untrimmed surfaces also occurs during CAD
import - particularly IGES. Many older IGES files contain only untrimmed surfaces. Depending upon what you wish
to do with the model, you may need to build curves on these surfaces and trim them with these curves. One final
circumstance involves structured meshing. In some cases, you may wish to project structured Face entities onto
surfaces. Such surfaces can be trimmed or untrimmed. When projecting to trimmed surfaces, grid nodes will be
projected only into the active portion of the surface (i.e. within the bounds of the trimming curves). When
projecting to untrimmed surfaces, grid nodes can project anywhere on the surface.

MANIFOLD VERSUS NON-MANIFOLD SURFACES

In CFD-GEOM, a manifold surface topology is one in which the underlying Point entities (the endpoints of the
trimming curves) are shared by exactly 2 trimming curves (Note: closed curves use their endpoints twice). For
example, the following surface is considered a manifold surface, because there are 2 trimming curves incident at
each endpoint.

136
Geometry Tab

Non-manifold surfaces are those in which one or more of the underlying endpoints are used by 1, 3, or more
trimming curves. The following is an example of a non-manifold surface. Notice how the point at the base of the
circle is shared by 4 curves.

137
CFD-GEOM V2014.0 User Manual

The following is also an example of a non-manifold surface. There are 2 endpoints underlying this surface. The
upper point is used twice by a circle (it is both the start and end point of the circle) and once by the line. This is
similar for the other point.

138
Geometry Tab

Ordinarily, non-manifold surfaces require no special considerations when modeling and meshing (exception:
surface splitting is not currently supported for such surfaces). However, keep in mind that, when exporting such
surfaces to IGES, STEP, and other formats, not all downstream modeling and meshing applications can reconstruct
some types of non-manifold surfaces.

A more unusual type of non-manifold surface is shown below. This surface contains a stray curve emanating from
the outer boundary into the interior of the surface. In CFD-GEOM, this type of curve is known as a spur. Its start
point is used by 3 trimming curves; its end point is used only by the spur. When meshing such surfaces, triangles
(or quads) will be generated off both sides of a spur. Such features are captured during mesh generation. If the
surface is written to a 2-D DTF file, the grid segments on the spur will receive a thin wall tag.

Most users will not need to create surfaces with spurs. In most cases, spurs enter a model during CAD import (i.e.
they were created in the original CAD system). Sometimes, spurs can be created during Boolean operations in CFD-
GEOM. Adding spurs can be useful, however, if you wish to add thinwall surfaces (i.e. baffles) to a model. Consider
the following example where we need to make a baffle surface straddling 2 surfaces. The spurs on the 2 lower
surfaces provide a mechanism to attach the baffle surface, ensuring continuity between the meshes.

139
CFD-GEOM V2014.0 User Manual

PERIODIC SURFACES AND SEPARATION LOOPS

A periodic surface is a special type of surface that closes smoothly upon itself. Examples include cylinders and
spheres, which are closed in 1 direction; and tori, which are closed in 2 directions. The location at which a periodic
surface wraps around to itself is known as a seam. When modeling periodic surfaces, a curve may or may not be
located on the seam (when present, they are known as seam curves). Consider the following cylinders. In the
cylinder on the left, the set of trimming curves includes the seam curve. Notice how the seam curve is captured in
the triangular mesh. The cylinder on the right does not include a seam curve in its list of trimming curves. Notice
how the triangular mesh ignores the underlying seam in the surface.

Most surfaces are bounded by exactly 1 outer loop of trimming curves and 0 or more inner loops of trimming
curves defining holes. The cylinder on the right illustrates a special type of loop. Here, 2 loops of trimming curves
are needed to define the outer boundaries of the surface, and neither lies “inside” the other. Hence, they cannot

140
Geometry Tab

be classified as outer or inner loops. This special type of loop is known as a separation loop. Ordinarily, you will not
need to concern yourself with loop types in CFD-GEOM; whether or not you include seam curves in cases similar to
the above is a matter of preference. However, if you plan to export such surfaces to IGES, STEP, and other CAD
formats for use in downstream applications, please be aware that not all downstream systems support surfaces
trimmed by separation loops.

Fit Through Curves


The Fit Through Curves surface creation tool will fit a surface trimmed surface through a closed set of lines, curves,
edges, and/or composite edges.

Fit Through Curves Button

Fit Surface Through Curves Panel

Fit a surface through a set of entities


1. Select the Fit Through Curves tool from the Surface Creation options

2. Select a closed set of lines, curves, edges, and/or composite edges

3. Click Middle Mouse or the Apply button to create the surface

Advanced Covering
The Advanced Covering surface creation tool will fit a trimmed or untrimmed surface through a set of curves. This
tool can be used in those cases where the Fit Through Curves tool fails or gives poor results.

Advanced Covering Button

141
CFD-GEOM V2014.0 User Manual

Advanced Covering Panel

Use advanced covering


1. Click the Advanced Covering button in the Surface toolbox. The Advanced Covering panel opens and the
Status Line prompts you to the required selection.

2. If required, change the starting surface type; the Automatic option chooses between a plane, cylinder, or
a sphere by minimizing the distance from the given curves to the surface. The Automatic option may
select an undesired type and, thus, a best fit plane, cylinder, or sphere starting surface can be enforced.

3. The Existing Surface option requires the selection of an existing surface prior to the selection of the
curves.

4. Click the Apply button to perform the advanced covering.

The Advanced Covering tool lets you fill n-sided, non-planar regions with a deformed surface that matches the
input curves. The method allows the software to start either with a given surface to be deformed or it will
generate an arbitrary surface as a starting point. The method generates either an untrimmed or trimmed surface
as dependent on the topology of the input curves, that is, if the curves form a valid topology , then a trimmed
surface is generated. The number of specified curves is not limited.

The following image shows a series of non-planar profile curves which should be used to generate a surface such
that it matches the curves. If the collection is taken as a whole, then the following surface will result. The surface
matches the given curves and a valid trimmed surface is generated.

142
Geometry Tab

Next, the same curves are used but one of the curves on the outer boundary is not input such that the resulting
topology is not valid, and, in that case, an untrimmed deformed surface is generated to match the input curves.

The next examples show the behavior when a non-planar region is filled with an arbitrary or a user-specified
surface. Given just the curves on the left, the resulting surface is shown on the right. Note the discontinuous
behavior of the surface.

143
CFD-GEOM V2014.0 User Manual

The following images show the curves and a starting cylindrical surface that is to be deformed and the resulting
surface. In this case, selecting the Best Fit Cylinder option may have yielded similar results without first having to
manually create the cylindrical starting surface.

The advanced covering option also allows the specification of internal guide curves to guide the characteristics of
the final surface. In this case, the Best Fit Plane option was selected otherwise, the automatic option would have
started with a spherical surface. Those internal guide curves will be present in the mesh generated on the surface
as shown below.

Extrude Surface
The Extrude (along a vector) Surface tool extrudes surfaces from lines, curves, and other surfaces.
• When extruding from lines/curves, a surface will be extruded from each picked entity. For example, if two
curves are picked, two surfaces will be created).

144
Geometry Tab

• When extruding from surfaces, multiple surfaces will be created. For example, if extruding from a surface
that is bounded by four curves, a surface is extruded from each. In addition, a duplicated and translated
copy of the picked surface is also created.

Whether extruding from lines, curves, or surfaces, you must first pick these entities and press the middle mouse
button to complete the set. If you are extruding surfaces from a trimmed surface, CFD-GEOM creates new surfaces
as described above. CFD-GEOM automatically trims the newly created surfaces. The picked surface and the newly
created surfaces will form a closed volume, or solid, suitable for Closed Surface Set creation and subsequent
unstructured grid generation.

Extruded Surface Button

Extrude Surface Panel

145
CFD-GEOM V2014.0 User Manual

Extrude a surface
1. Click the Extruded Surface button in the Surface toolbox. The Surface Extrusion panel appears and the
Status Line prompts you to select an entity for extrusion.

2. Select the entity for extrusion in the graphics area.

3. Click the middle mouse button to complete the selection. The entity color changes to red to indicate
that it has been selected. The Status Line prompts you to select an extrusion mode.

4. Select one of the following extrusion modes:

X, Y, or Z - Click any of these options to extrude in that particular direction.

Existing Line(s) - Prompts you to pick a line for extrusion. The vector will then be defined as the vector
from the line's start point to the line's end point.

Point-to-Point - Enables you to pick two point entities to define your vector. After picking two points, the
extrusion vector is defined as the vector between the first and second picked points. If you select the
Vector option, the text field showing the current extrusion vector becomes active.

Vector - Enables you to define the extrusion vector. Note that it is not necessary to normalize the vector
yourself.

Screen Normal - Extrudes in a direction normal to the screen. This vector can be changed by rotating the
model view. Note that the extrusion vector points INTO the screen when you use this option. Also note
that for all of these options, it is not necessary for the extrusion vector to be expressed as a normalized
vector. CFD-GEOM will automatically normalize the vector when it actually performs the extrusion.

5. Enter the extrusion distance in the Extrusion Distance field.

6. Click Preview to preview the results or Apply to extrude the surface. Although the surface is created,
it may disappear from view. To view the surface, click the Surface Grid button on the toolbar.

Revolved Surface
The Revolved Surface tool enables you to generate a surface by selecting a set of curves and lines and revolving
them about an arbitrary axis through a specified angle.

Revolved Surface Button

146
Geometry Tab

Surface Revolution Panel

To generate a revolved surface:


1. Click the Revolved Surface button in the Surface toolbox. The Status Line prompts you to select the
lines, surfaces, or curves to be revolved.

2. Select the surface and click the middle mouse button to complete the selection. The Surface
Revolution panel appears and the Status Line prompts you to select a revolution mode.

3. Choose one of the following revolution modes from the panel:

X - revolve on the X-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

147
CFD-GEOM V2014.0 User Manual

Y - revolve on the Y-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Z - revolve on the Z-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Existing line - Revolve on a selected line

Two Points - Two points define a revolution axis

3-Point -This option allows you to revolve an entity about any arbitrary point in any direction. After
selecting the entity to be revolved, you then select the point about which revolution is to occur. A start
point and end point are then specified. These two points define the angle of rotation with respect to the
center of revolution. These two points and the center of revolution also define the plane in which the
revolution occurs.

Note The main distinction between this option and the "two points" option has to do with scripting. If you
use the "2 points" option, then a journaled script will use the 2 point entities. If the point locations change
between script runs, the rotation axis will move with the points. If you use the "two coord sets" option, the
rotation axis will always remain fixed (unless
you do something in the script to change the coordinates). They will not be tied to two point entities.

Point and Direction - This option allows you to select the start point for the axis of rotation, then specify a
dx, dy, and dz to complete the axis.

Two Coordinate Sets - This option allows you to specify the start and end point for the axis of rotation.

4. Enter the revolution angle in degrees.

5. Click Preview to preview the results. Click Apply to create the surface. Click Cancel to cancel the
operation.

Swept Surface
The Swept Surface tool creates complex surfaces by sweeping selected curves along a prescribed path (the
sweeping curve). You may select a set of curves to be swept after which an arbitrary number of connected curves
defining the sweep path may be selected. In addition to these selections, a Twist Vector must also be specified.
This vector controls the nature of the resulting surface, and though its selection is arbitrary, good and poor choices
exist. A general rule of thumb is to prescribe a twist vector that is more normal to the extrusion path. A poorly
chosen twist vector may result in excessive twisting of the final surface about the extrusion path making it
unsuitable for use in conjunction with structured or unstructured grids. As example, a sweep path lying strictly in
the XY plane has a normal vector as Z and for a helical path specifying the axis of the helix is a good choice.

Typically, swept surfaces are created as a combination of both rotations and translations. To create a swept
surface using only translations, the "Fixed Orientation” box must be checked. The "Reverse Sweep Direction” box
can be checked to reverse the direction of the surface along the sweep path.

Additionally, a linear scaling can be applied during the sweep by specifying the desired scaling in the "Scaling” text
field.

148
Geometry Tab

As the surface is initially defined in a discrete sense, i.e., by positioning a number of sections along the path, you
may specify the number of discrete sections to define the surface and thus control the surface characteristics.

Swept Surface Button

Surface Sweep Panel

Create a swept surface


1. Click the Swept Surface button in the Surface toolbox. The Surface Sweep panel appears and the
Status Line prompts you to select curves.

2. Select the curves in the graphics area and click the middle mouse button to complete the selection.
Toggling on the Auto box allows the software to choose an appropriate twist vector in those
circumstances where it is difficult to manually specify this vector. The resulting surface will exhibit
some rotation about the local path tangent. It is highly recommended that the twist vector be
manually specified as described above for planar and helical sweep paths.

3. Click Preview to preview the results or Apply to create the surface. This surface is formed in a discrete
sense by repositioning the curves along the sweep path, thereby defining the topology of the surface.

149
CFD-GEOM V2014.0 User Manual

Lofted Surface
A ruled surface is one that is interpolated between two boundaries. (i.e. top and bottom) and is a type of a lofted
surface. A lofted surface is a surface that is interpolated through n number of curves. (i.e. top middle 1 middle 2
and bottom).

Lofted Surface Button

Lofted Surface Panel

Create a lofted surface


1. Click the Lofted Surface button in the Surface toolbox. The Surface Lofting panel appears and the
Status Line prompts you to select curves.

2. Select two or more curves from the graphics area.

3. If the number of curves is two, the surface is created by a linear interpolation between curves one
and two.

If the number of curves is greater than two, the surface is interpolated by a bi-cubic approximation to the
input curves.

3. Click Apply. The surface is created by a linear interpolation between curves one and two.

4 Sided Surface
The 4-Sided Surface tool generates a NURBS surface from two, three, or four connected boundary lines or curves.

4 Sided Surface Button

4-Sided Surface Panel

150
Geometry Tab

Create a 4-sided surface


1. Click the 4-Sided Surface button in the Surface toolbox. The 4-Sided Surface panel appears and the
Status Line prompts you to select four sets of lines.

2. Select the four lines individually that will define the surface and click the middle mouse button after
each one is selected.

3. Click Preview to preview the results or Apply to create the surface.

Offset Surface
The Offset Surface tool creates an offset surface. These surfaces are often required in turbo-machinery
applications to create small thicknesses for turbine blades.

Offset Surface Button

Offset Surface Panel

Create an offset surface


1. Click the Offset Surface button in the Surface toolbox. The Offset Surface panel appears and the
Status Line prompts you to select a surface.

2. Select the surface you want to offset in the graphics area and click the middle mouse button to
complete the selection.

3. Enter the offset distance in the Offset Distance field of the panel. The surface is duplicated at the
offset distance in the given direction, thereby providing a thickness.

1. CAUTION Do not use large offset values while using this method. The offset distances should not be
over 5% of the smaller dimension of a surface.

4. Click Preview to preview the results or Apply to create the surface.

Surface on Face
The Surface on Face tool creates a NURBS surface that passes through the grid points on a face.

151
CFD-GEOM V2014.0 User Manual

Surface on Face Button

Surface Through Face Panel

Create a surface on a face


1. Click the Surface on Face button in the Surface toolbox. The Surface Through Face panel appears and
the Status Line prompts you to select grid points.

2. Select the grid points in the graphics area. The face grid is then associated to the new NURBS surface.
This association allows the face grid to be enriched or coarsened without losing the original shape of
its surface. To include the edges associated with the selected face, choose the Use Edges option.

3. Click Preview to preview the results or Apply to create the surface.

Untrimmed -> Trimmed


The untrimmed to trimmed surface tool creates a trimmed surface from untrimmed (NURBS) surfaces. The
boundary of the trimmed surface will correspond to the boundaries of the original untrimmed surface.

Untrimmed to Trimmed Button

Trimmed Surface from Untrimmed Panel

Create a trimmed surface from an untrimmed surface


1. Click on the Untrimmed -> Trimmed button in the Surface toolbox. The Trimmed Surface from
Untrimmed panel appears and the Status Line prompts you to select untrimmed surface(s).

2. Select the untrimmed surfaces in the graphics area.

152
Geometry Tab

3. Press the Apply button or the middle-mouse button to complete the operation.

Trimmed -> Untrimmed


The Trimmed to Untrimmed surface tool creates an untrimmed surface from a trimmed surface.

Trimmed to Untrimmed Button

Untrimmed Surface from Trimmed Panel

Create the surface


1. Click on the Trimmed -> Untrimmed button in the Surface toolbox. The Untrimmed Surface from
Trimmed panel appears and the Status Line prompts you to select untrimmed surface(s).

2. Select the trimmed surfaces in the graphics area.

3. Press the Apply button or the middle-mouse button to complete the operation.

Surface Modification Tools

Surface Modification Tools


The following tools are available to modify a surface and it's boundaries:

Trim
Advanced Trimming
Cut Hole
Remove Hole
Make Two Surfaces
Fill Hole
Invert
Modify Surface Boundary
Edge Substitution
Reduce Surface
Reshape Surface

153
CFD-GEOM V2014.0 User Manual

Surface Modification Tools

Trim
The Trim tool allows you define (or redefine) the outer boundaries of a surface with a closed, manifold loop of
lines, curves, edges, and/or composite edges (for a discussion of closed and manifold surface boundaries see ).
When applied to an untrimmed surface, a new trimmed surface is created. When applied to an existing trimmed
surface, the outer boundary of the trimmed surface is redefined (subject to some restrictions). This tool provides
basic trimming capabilities. For more advanced capabilities, such as the creation or modification of non-manifold
surfaces, please refer to the Advanced Trimming tool.

Trim Button

Trim Surface Panel

154
Geometry Tab

Define the outer boundaries of an untrimmed surface


1. Select an untrimmed surface

2. Select a closed, manifold loop of lines, curves, edges, and/or composite edges that lie on the surface

3. Press Apply or middle mouse in the graphics area to create the new trimmed surface. Note that if you
wish for the untrimmed surface to remain available for further trimming operations, you should
select the “Retain Original” button. Otherwise, the untrimmed surface will be permanently hidden.

Redefine the outer boundaries of an existing trimmed surface


1. Select a trimmed surface.

2. Select a closed, manifold loop of lines, curves, edges, and/or composite edges that lie on the surface.
These may include entities that already trim the surface.

3. Click Apply or press the middle mouse button in the graphics area to complete the operation. If “Retain
Original” is not selected, the selected trimmed surface will be modified and attached entities will be
updated (see additional restrictions below). If “Retain Original” is selected, the selected surface will
remain unmodified. Instead, a copy of the surface will be created; and the boundary redefinition will be
applied to that surface.

Restrictions on redefining the boundaries of an existing trimmed surface:


1. This operation is not allowed on a surface that belongs to a shell or semi-structured domain (unless
“Retain Original” is selected).
2. If the trimmed surface contains any holes, the newly selected boundaries must surround the holes.

Advanced Trimming
This tool allows you to perform advanced trimming operations to define (or redefine) the boundaries of a surface.
When applied to an untrimmed surface, a new trimmed surface is created. When applied to an existing trimmed
surface, the boundaries of the trimmed surface are redefined (subject to some restrictions). Advanced trimming
operations include, but are not limited to, the following operations:

1. (Re)definition of outer and inner boundaries simultaneously. This includes the replacement of
lines/curves with edges, and vice versa, and the addition/removal of holes.

2. Applying separation loops to periodic surfaces such as cylinders.

3. Addition/removal of spurs to/from a surface..

Advanced Trimming Tool

155
CFD-GEOM V2014.0 User Manual

Advanced Trimming Surface Panel

Define the boundaries of an untrimmed surface


1. Select an untrimmed surface.

2. Select the lines, curves, edges, and/or composite edges needed to define the desired boundaries
(outer and inner) that lie on the surface. These entities must lie on the untrimmed surface.

3. Press Apply or middle mouse in the graphics area to create the new trimmed surface. Note that if you
wish for the untrimmed surface to remain available for further trimming operations, you should
select the “Retain Original” button. Otherwise , the untrimmed surface will be permanently hidden.

To redefine the boundaries of an existing trimmed surface:


1. Select a trimmed surface. The existing boundaries of the surface will be automatically selected.

2. Deselect any lines, curves, edges, and/or composite edges that you wish to disassociate from the
surface.

3. Select any additional lines, curves, edges, and/or composite edges that you wish to apply to the
surface.

4. Press Apply or middle mouse in the graphics area to complete the operation. If “Retain Original” is
not selected, the selected trimmed surface will be modified and attached entities will be updated
(see additional restrictions below). If “Retain Original” is selected, the selected surface will remain
unmodified. Instead, a copy of the surface will be created; and the boundary redefinition will be
applied to that surface.

Restrictions on redefining the boundaries of an existing trimmed surface:


1. This operation is never allowed on a surface that belongs to a semi-structured domain (unless “Retain
Original” is selected).

2. This operation is permitted on surfaces that belong to shells only if it does not “open” the shell. For
example, it is permissible to add a spur to a surface used by a shell.

Cut Hole
The Cut Hole(s) tool can be used to cut a hole or holes using any closed set of lines, curves, edges, and/or
composite edges.

156
Geometry Tab

Cut Hole(s) Tool

Cut Hole(s) In Surface Panel

Trim a surface with a loop


1. Select the surface to be trimmed

2. Select a set of closed lines, curves, edges, and/or composite edges to be used to cut a hole or holes in
the surface.

Note The set of lines, curves, edges, and/or composite edges must be completely inside the outer
boundaries of the surface being trimmed.

3. Click Apply or the middle mouse button in the graphics area to cut a hole in the surface.

Remove Hole
The Remove Hole(s) tool removes a hole in a surface.

Remove Hole(s) Tool

Remove Hole From Surface Panel

Remove a hole
1. Select the surface from which the hole will be removed.

157
CFD-GEOM V2014.0 User Manual

2. Select a set of closed lines, curves, edges, and/or composite edges that create the hole in the surface

3. Click Apply or the middle mouse button in the graphics area to remove the hole from the surface.

Make Two Surfaces


The Make Two Surfaces tool can be used to create a nested surface.

Make Two Surfaces Tool

Make 2 Surfaces Panel

Create a nested surface


1. Select the surface

2. Select a set of closed lines, curves, edges, and/or composite edges that lie inside the outer
boundaries of the selected surface.

3. Click Apply or the middle mouse button in the graphics area to create the new surface.

Fill Hole
The Fill Hole tool will fill the interior space in a surface.

Fill Hole Tool

Fill Holes In Surface Panel

158
Geometry Tab

Fill a hole in a surface


1. Select the surface with a hole.

2. Select a set of closed lines, curves, edges, and/or composite edges that will be used to fill the hole in
the surface.

3. Click Apply or the middle mouse button in the graphics area to fill the hole in the surface.

Invert
The Invert tool can be used to modify the boundaries of a surface.

Invert Tool

Invert Surface Panel

Invert a surface
1. Select a set of lines, curves, edges, and/or composite edges that you want to replace. These curves
must lie on the surface.

2. Select a set of lines, curves, edges, and/or composite edges that will replace the current boundary of
the surface.

3. Click Apply or the middle mouse button in the graphics area to modify the surface boundaries.

Note The two sets of lines, curves, edges, and/or composite edges must share common end points. If
they do not share common end points, the boundary will not be modified.

Modify Surface Boundary


The Modify Surface Boundary tool can be used to modify the boundaries of a surface.

159
CFD-GEOM V2014.0 User Manual

Modify Surface Boundary Tool

Modify Surface Boundary Panel

Edge Substitution
The Edge Substitution tool allows you to automatically replace lines/curves with existing edges (or vice versa) on
the boundaries of 1 or more surfaces simultaneously. This tool is a specialized version of the Modify Surface
Boundary tool and is generally more convenient for use in the construction of hybrid grids. To use this tool, select 1
or more edges or composite edges. Then press "Substitute In” or "Substitute Out” (note that pressing middle-
mouse is the same as pressing "Substitute In”). If you press "Substitute In”, CFD-GEOM performs the following
actions:

• Determine whether the (composite) edge's underlying lines/curves collectively form part of any surface
boundaries (loops).
• In the definition of each such surface, replace those lines/curves with the edge (where it can be done
without damaging the model).

If you press "Substitute Out”, CFD-GEOM performs the following actions:

• Determine whether the (composite) edge forms part of any surface boundaries (loops).
• In the definition of each such surface, replace the edge with its underlying lines/curves (where it can be
done without damaging the model).

Edge Substitution Tool

Surface/Edge Substitution Panel

160
Geometry Tab

Substitute edges in/out of a surface


1. Select a set of edges

2. Decide whether to substitute them into the surface or out, and select the appropriate action
(Substitute In/Substitute Out)

Reduce Surface
The Reduce Surface tool reduces the number of control points that define the surface geometrically and can lead
to savings in memory and computational resources.

Reduce Surface Button

Reduce Surface Control Points Panel

Reduce a surface
1. Click the Reduce Surface button in the Surface toolbox. The Reduce Surface Control Points panel
appears and the Status Line prompts you to select a surface.

2. Select the surface for reduction in the graphics area and click the middle mouse button to complete
the selection.

3. Set the reduction tolerance in the Reduction Tolerance field. The reduction tolerance parameter sets
an absolute accuracy of the variance between the reduced and original surface at pre-determined
locations on the surface. Higher values of the reduction tolerance tend to remove more control
points at the expense of geometric fidelity.

Note It is recommended that you set a reduction tolerance and use the Preview feature to gauge the
final result because setting a large value of this parameter can destroy the original geometric
characteristics of the surface.

161
CFD-GEOM V2014.0 User Manual

4. Click Preview to preview the results or Apply to reduce the surface.

Reshape Surface
The Reshape Surface tool enables you to specify change the shape of existing trimmed or untrimmed surfaces.
The tool allows the user to specify source points on the surface and their desired locations such that the surface
passes through those points. Note that the source point does not have to necessarily lie on the surface as it will be
projection onto the surface prior to the reshape operation.

Reshape Surface Button

Reshape Surface Panel

Reshape a surface
1. Click the Reshape Surface button in the Surface Modification toolbox. The Reshape Surface panel appears
and the Status Line prompts you to select a surface.

2. Select the surface you want to reshape in the graphics area.

3. The Status Line prompts for pairs of points that specify the source and target points. Once the source and
target pairs are selected and the desired surface shape has been achieved click the Apply button to
reshape the surface.

The following images show an example of a surface reshape operation:

The image on the left shows a surface with green points that lie on the circle; the blue points are locations that the
deformed surface should pass through. The image on the right shows, in green, the surface that would be
generated if the green (source) points are relocated to the blue (target) point locations.

162
Geometry Tab

In the case of deforming a trimmed surface CFD-GEOM may warn the user if the resulting surface deformations
has caused the trimming curves to be significantly off the surface. It is advisable, in those cases, to first untrim the
surface, perform the desired reshape, project the trimming curves onto the surface and then re-trim the surface.

Tip Prior to using this tool, it may be helpful to reduce control points on surfaces where desired shapes are not
being achieved.

Model Repair Tools

Model Repair Tools


The Model Repair options contain the following tools to assist in making a water-tight model:

Filter Points Globally


Filter Curves
Sew Surfaces
Surface Stitch

FILTER POINTS GLOBALLY

Use the Filter Points Globally tool to filter points for the entire model. The filter acts by equating points for which
the absolute distance between the points is less than or equal to the prescribed precision. The prescribed precision
is arbitrary and may be different than the global model precision.

Filter Points Globally Button

Filter Points Globally Panel

163
CFD-GEOM V2014.0 User Manual

Filtering points globally


1. Click the Filter Points Globally button in the Model Repair Options toolbox. The Filter Points Globally
panel opens.

2. Enter the required precision in the Filter Precision box.

3. Click Apply to filter all points.

FILTER CURVES

Use the Filter Curves tool to specify a local tolerance for curve filtering. This tool tries to determine if duplicate
curves exist based on the specified tolerance and replace duplicates with their equivalent, wherever they may
occur.

Filter Curves Button

Global Curve Filter Panel

Filtering curves
1. Click the Filter Curves tool from the Model Repair Options toolbox.

2. In the Filter Precision box, enter the required precision to filter curves.

3. Click Apply to perform the curve filter.

SEW SURFACES

Use the Sew Surfaces tool to automatically close gaps among neighboring surfaces, given a specified gap
tolerance.

Sew Surfaces Button

164
Geometry Tab

Sew Surfaces Panel

This tool has the topological restriction of only using gaps where the endpoints of the curves forming the gap share
the same endpoints. For example, in the following image, the left image shows two surfaces which should share
the same common boundary curve but are separated by a gap where the gap consists of two curves which share
the same endpoints; after the tool is invoked the right image shows the final result.

Performing a sew surfaces operation


1. Select the Sew Surfaces tool from the Model Repair Options toolbox.

2. Specify the desired gap tolerance in the Gap Tolerance box.

3. Optionally, select the surfaces on which to perform the operation; if nothing is selected then the tool will
attempt to close all gaps in the model.

4. Click Apply to perform the sew surfaces operation.

SURFACE STITCH

Use the Surface Stitch tool to automatically resolve overlaps and boundary mismatches between two adjacent
surfaces.

165
CFD-GEOM V2014.0 User Manual

Surface Stitch Button

Surface Stitching Panel

This tool can be invoked only on surfaces that are not used in the construction of any other entities in the model.
In the following figure the image to the left shows two surfaces that overlap, and the right shows the result after
the stitching operation. The surfaces now share common boundaries and the overlap has been resolved.

Performing a surface stitch operation


1. Select the Surface Stitch tool from the Model Repair Options toolbox.

2. Select two surfaces.

3. Click Apply to perform the stitch surfaces operation.

Wireframe/Solid Creation Tools

Wireframe and Solid Creation


The Extrude/Revolve Wireframe creation tools take any number of geometric entities (points, lines, and curves)
and either linearly extrude or revolve to create a wireframe model. The extrude options will generate line
segments between the endpoints while the revolve option will create arcs between the endpoints.

The Extrude/Revolve Solid creation tools take any number of surfaces and create multiple surfaces by either linear
extrusion or revolution of the bounding curves of the given surface(s). Notice that the original surfaces are also
duplicated at the end of the linear extrusion or revolution. In addition, tools to create Shells (voids), unstructured

166
Geometry Tab

domains (Solids) , box and cylindrical solids, model inversion, model splitting, and Boolean operations are
available.

Extrude Wireframe
Revolve Wireframe
Solid Extrusion
Solid Revolution
Create All Domains
Shell
Unstructured Domain
Thin Wall Surfaces
Box Creation
Cylinder Creation
Invert Model
Split Model
Solid Booleans

Solid and Wireframe Creation Buttons

167
CFD-GEOM V2014.0 User Manual

Extrude Wireframe
The Extrude Wireframe tool is similar to the Translate option. When the Duplicate box is checked, it additionally
connects the beginning and ending points of lines and curves in the original set to the corresponding points in the
translated set.

Extrude Wireframe Button

Wireframe Extrusion Panel

168
Geometry Tab

Extrude a line
1. Click the Extrude Wireframe button in the Solid and Wireframe toolbox. The Wireframe Extrusion panel
appears and the Status Line prompts you to select a line.

2. Select the line for extrusion in the graphics area.

3. Click the middle mouse button to complete the extrusion set. The Status Line prompts you to select an
extrusion mode.

4. Select one of the following extrusion modes:

X, Y, or Z - Click any of these options to extrude in that particular direction.

Existing Line - Prompts you to pick a line for extrusion. The vector will then be defined as the vector from
the line's start point to the line's end point.

Point-Point - Enables you to pick two points to define your vector. After picking two points, the extrusion
vector is defined as the vector between the first and second picked points. If you select the Vector option,
the text field showing the current extrusion vector becomes active.

Vector - Enables you to define the extrusion vector. Note that it is not necessary to normalize the vector
yourself.

Screen Normal - Extrudes in a direction normal to the screen. This vector can be changed by rotating the
model view. Note that the extrusion vector points INTO the screen when you use this option. Also note
that for all of these options, it is not necessary for the extrusion vector to be expressed as a normalized
vector. CFD-GEOM will automatically normalize the vector when it actually performs the extrusion.

5. Enter the extrusion distance in the Extrusion Distance field.

6. Click Preview to preview the results or Apply to extrude the line.

7. Press Ctrl-G to re-scale the view.

Revolve Wireframe
The Revolve Wireframe tool is similar to Rotate with the Duplicate turned on. Arcs are generated along the
rotation path. For this option, only geometric entities (points, lines, and curves) may be selected.

Revolve Wireframe Button

169
CFD-GEOM V2014.0 User Manual

Wireframe Revolution Panel

Revolve an entity
1. Click the Revolve Wireframe button in the Solid and Wireframe toolbox. The Wireframe Revolution Panel
appears and the Status Line prompts you to select the entity you want to revolve. The revolve tool is
different from the rotate tool because it creates connectors between the first and last points, similar to
the extrude tool.

2. Select the entity you want to revolve in the graphics area and click the middle mouse button to complete
the set. Its color changes to red to indicate that it has been selected. The Status Line prompts you to
select a revolution mode.

3. Choose from the following revolution modes:

170
Geometry Tab

X - revolve on the X-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Y - revolve on the Y-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Z - revolve on the Z-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Existing line - Revolve on a selected line

Point - Point - Two points define a revolution axis

3-Point -This option allows you to revolve an entity about any arbitrary point in any direction. After
selecting the entity to be revolved, you then select the point about which revolution is to occur. A start
point and end point are then specified. These two points define the angle of rotation with respect to the
center of revolution. These two points and the center of revolution also define the plane in which the
revolution occurs.

Point and Direction - This option allows you to select the start point for the axis of rotation, then specify a
dx, dy, and dz to complete the axis.

Two Coordinate Sets - This option allows you to specify the start and end point for the axis of rotation.

Note The main distinction between this option and the "two points" option has to do with scripting. If you
use the "2 points" option, then a journaled script will use the 2 point entities. If the point locations change
between script runs, the rotation axis will move with the points. If you use the "two coord sets" option,
the rotation axis will always remain fixed (unless you do something in the script to change the
coordinates). They will not be tied to two point entities.

4. Enter the revolution angle.

5. Click Preview to preview the revolution or Apply to apply the settings.

Solid Extrusion
The Solid Extrusion tool enables you to create an extruded solid from an existing surface.

Solid Extrusion Button

171
CFD-GEOM V2014.0 User Manual

Solid Extrusion Panel

Extrude a surface
1. Blank all entities by clicking the All Off button on the Entity Bar.

2. Turn surfaces on by clicking the Surface button on the Entity Bar.

3. Select View Menu-Surface Display Options-Outline to set the view to outline mode.

4. Click the Solid Extrusion button in the Solid and Wireframe toolbox. A blank Solid Extrusion panel appears
and the Status Line prompts you to select a surface for extrusion.

5. Select the outline of a surface in the graphics area and click the middle mouse button to complete the
selection. The Solid Extrusion panel appears and the Status Line prompts you to select an extrusion mode.

172
Geometry Tab

6. Select one of the following extrusion modes:

X, Y, or Z - Click any of these options to extrude in that particular direction.

Existing Line - Prompts you to pick a surface for extrusion. The vector will then be defined as the vector
from the surface's start point to the line's end point.

Point-Point - Enables you to pick two points to define your vector. After picking two points, the extrusion
vector is defined as the vector between the first and second picked points. If you select the Vector option,
the text field showing the current extrusion vector becomes active.

Vector - Enables you to define the extrusion vector. Note that it is not necessary to normalize the vector
yourself.

Screen Normal - Extrudes in a direction normal to the screen. This vector can be changed by rotating the
model view. Note that the extrusion vector points INTO the screen when you use this option. Also note
that for all of these options, it is not necessary for the extrusion vector to be expressed as a normalized
vector. CFD-GEOM will automatically normalize the vector when it actually performs the extrusion.

7. Select Create Solids to automatically create solids; otherwise, only surfaces will be created.

8. Enter the extrusion distance in the Extrusion Distance field.

9. Click Preview to preview the results or Apply to extrude the surface. The surface becomes an extruded
solid.

10. Rotate the model so that a 3D view can be seen. As you rotate the model, only the outline of the model is
seen and the surface is temporarily blanked. When you release the left mouse button, the surfaces
reappear.

11. Press Ctrl-G to re-scale the view.

12. Press q on the keyboard to quit Extrude Solid mode.

Solid Revolution
The Solid Revolution tool enables you to create a revolved solid, similar to an extruded solid, by revolving a surface
about an arbitrary axis of revolution. The extrude and revolve options operate identically to their counterparts in
surface creation.

Solid Revolution Button

173
CFD-GEOM V2014.0 User Manual

Solid Revolution Panel

Revolve a surface
1. Click the Solid Revolution button in the Solid and Wireframe toolbox. A blank Solid Revolution panel
appears and the Status Line prompts you to select a surface to revolve.

2. Select a surface in the graphics area and click the middle mouse button to complete the selection. The
complete Solid Revolution panel appears and the Status Line prompts you to select a revolution mode.

3. Choose one of the following revolution modes from the Solid->Revolve Surf. panel:

174
Geometry Tab

X - revolve on the X-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Y - revolve on the Y-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Z - revolve on the Z-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Existing line - Revolve on a selected line

Point - Point - Two points define a revolution axis

3-Point -This option allows you to revolve an entity about any arbitrary point in any direction. After
selecting the entity to be revolved, you then select the point about which revolution is to occur. A start
point and end point are then specified. These two points define the angle of rotation with respect to the
center of revolution. These two points and the center of revolution also define the plane in which the
revolution occurs.

Point and Direction - This option allows you to select the start point for the axis of rotation, then specify a
dx, dy, and dz to complete the axis.

Two Coordinate Sets - This option allows you to specify the start and end point for the axis of rotation.

4. Select Create Solids to automatically create the solids; otherwise, only surfaces will be created.

5. Enter the revolution angle in degrees.

6. Click Preview to preview the results. Click Apply to keep the revolved surface. Click Cancel to cancel the
operation. As with extruded surfaces, you may select a trimmed surface (instead of a line or curve) to
obtain a revolved solid.

Create All Domains


The Create All Domains tool, located in the "Solid and Wireframe Domain Options" toolbox under the Geometry
tab, allows for the automatic detection and creation of Shells and Unstructured Domains from an arbitrary
collection of trimmed surfaces and faces, or discrete surfaces. Unlike the traditional Shell creation tool, which can
construct shells only from manifold collections of surfaces and faces (i.e. it can not detect and create logically
adjacent shells), the Create All Domains tool is capable of identifying shells forming logically and spatially adjacent
volumes and then constructing domains (including any interior voids) from them. This capability is often useful
after CAD file import.

Suppose, for example, that you have just read an IGES file containing thousands of surfaces, but that contains no
"solid" information describing how those surfaces should be grouped together to form parts/domains. Also
suppose that the surfaces logically form several (possibly adjacent) parts. Assuming that the surfaces are properly
connected to each other, the Create All Domains tool will identify subvolumes in the collection and create shells
and domains from them.

Consider another example in which you have just imported a Parasolid file which contains "part" information
which is lost because the model did not import cleanly. After cleaning up the surface connectivity, you can then
use the Create All Domains tool to recover the lost information about solids in the model.

175
CFD-GEOM V2014.0 User Manual

Create All Domains Button

Create All Domains Panel

To use this tool, select Create All Domains in the "Solid and Wireframe Options" toolbox. You will be prompted to
select a set of trimmed surfaces, faces, and/or discrete surfaces and press middle-mouse or Apply. If you press
middle-mouse or Apply without selecting any entities, all trimmed surfaces, faces, and discrete surfaces in the
model will be passed to the analyzer. Otherwise, only those selected entities will be considered. You may choose
between 2 analysis algorithms. "Method 1", introduced in v2009.2, is relatively fast, and is suitable for most
models. "Method 2", introduced in v2009.4, is more expensive, but can handle a wider variety of models including
those with Thin Wall surfaces (surfaces embedded in a domain interior). In addition, this method is well suited for
discrete models where surfaces may require splitting to meet topological constraints.

Tip Because this tool identifies all possible shells and domains, it may create them in regions where you do not
wish to model/mesh. For example, it may create a domain inside a void within a larger domain. You should,
therefore, check each shell/domain and discard those outside the region of interest.

The recommended workflow and additional notes for each method are described here:

Method 1
1. Import model or create surface model in CFD-GEOM.

2. Select View->Show Exposed Boundaries to highlight all regions where surfaces are not connected to other
surfaces. Repair any such regions.

3. Open the Create All Domains tool, select "Method 1", and press middle-mouse or Apply. In the case
where no surfaces/faces have been selected, all surfaces and faces in the model will be passed to the
analyzer. Alternatively, if you wish to restrict analysis to certain surfaces, you may select those entities
before pressing middle-mouse or Apply.

4. Behind the scenes, the analyzer will cull out any surfaces incapable of forming part of a shell (i.e. those
with boundaries not shared by other surfaces). The analyzer will then identify all possible volumes,
construct shells/domains, and report the number of created domains.

176
Geometry Tab

5. Identify those shells/domains that lie outside the region of interest and discard. Because this tool
identifies all possible shells/domains, it may create some entities that are not relevant to your analysis.

Limitations of Method 1
1. This method is not capable of splitting surfaces. For example, a monolithic discrete surface (such
as one imported from an STL file) will often require splitting into smaller surfaces when the
triangles collectively form more than 1 volume. Such splitting must be performed before using
"Method 1". "Method 2" is more appropriate for this type of model.

2. This method is also not capable of identifying thin wall/baffle surfaces embedded in a volume.
See "Method 2" below.

Method 2
1. Import model or create surface model in CFD-GEOM.

2. Select View->Show Exposed Boundaries to highlight all regions where surfaces are not connected to other
surfaces. Repair any such regions.

3. Mesh any trimmed surfaces with the desired meshing parameters. During the analysis phase later, the
analyzer will generate a lightweight tetrahedral mesh from which it will derive logical volumes. To ensure
the success of this process, the input surface meshes should be of reasonable quality and should not
contain penetrating surfaces, overlaps, nor any other problems that might prohibit tetrahedral mesh
generation.

4. Open the Create All Domains tool, select "Method 2", and press middle-mouse or Apply. In the case
where no surfaces/faces have been selected, all surfaces and faces in the model will be passed to the
analyzer. Alternatively, if you wish to restrict analysis to certain surfaces, you may select those entities
before pressing middle-mouse or Apply.

5. Behind the scenes, the analyzer will mesh any unmeshed surfaces. If meshing parameters have already
been specified, they will be used; otherwise, default values will be used. The analyzer will then identify all
possible volumes and construct the appropriate shells and domains. Where necessary, it will split any
discrete surfaces to satisfy topological constraints. Any thinwall/baffle surfaces will be identified and
added to the domains in which they are embedded (See the Thin Wall Surfaces Tool).

6. Identify those shells/domains that lie outside the region of interest and discard. Because this tool
identifies all possible shells/domains, it may create some entities that are not relevant to your analysis.

7. Remesh any thinwall surfaces.

Limitations of Method 2
1. The success of this method depends upon the ability to generate a lightweight tetrahedral mesh
on the entire model. Poor surface meshes, penetrating surfaces, overlapping surfaces, and/or
arbitrarily connected surfaces will increase the likelihood of failure.

2. This method is usually more expensive (memory and time) than "Method 1".

177
CFD-GEOM V2014.0 User Manual

3. When Thin Wall surfaces are present, they will automatically be tagged for "Local Thin Wall
Processing". This means that, during surface meshing, additional processing will be performed to
ensure that the surface mesh meets additional constraints required by the CFD-ACE solver. You
will need to remesh these surfaces after domain creation to ensure that they receive the
appropriate mesh modifications. This will be remedied in a future release. See the Thin Wall
Surfaces Tool for additional considerations.

Shell
The Shell creation tools enable you to define a shell so that you can organize a geometry into a valid region for
unstructured gridding. A shell consists of a connected set of loops that define the region to grid. A shell can be
either open or closed but all entities (loops and faces) within the shell must be connected. Two loops are
connected if they share an underlying trimming loop entity. Trimming loops can be made from lines, curves, and
edges. Two faces, or a loop and a face, are connected if they share an edge.

The Shell tool checks to see if the picked surface and/or faces form a closed, connected shell. The following criteria
indicate a closed, connected shell:

• Surface and/or faces are connected if they share an underlying CFD-GEOM entity, i.e., a line, curve, or
edge.
• The proposed shell is closed if all underlying CFD-GEOM entities (lines, curves, and edges) of the selected
surface/face set are associated to two surfaces and/or faces.

CFD-GEOM automatically orients shells to point inward. The proper orientation of shells will be calculated
automatically at Domain creation time. A shell displays exactly the same as the display of its underlying entity, the
face or surface, with an additional line drawn to indicate the orientation of the shell.

Note If multiple closed but disjoint sets of surfaces and/or faces are selected for shell creation, CFD-GEOM will
generate a shell entity from each closed set of entities.

Shell Button

Shell Panel

Unstructured Domain
The Domain Creation tools enable you to organize the shells into a solid region or unstructured domain before you
invoke the unstructured grid generation algorithm. An unstructured domain consists of one or more shells and
may include externally read triangulations. An unstructured domain defines a region for creating an unstructured
2D or 3D grid.

178
Geometry Tab

• In 2D, the unstructured domain consists of one or more connected but Open Shells.
• In 3D, the unstructured domain consists of one or more Closed Shells.
The Unstructured Domain tool enables you to create unstructured domains and pick shells.

Unstructured Domain Button

Unstructured Domain Panel

(L) Box in a box domain creation example (R) Max tetrahedron size & unstructured boundary

ORIENTATION
The orientation of an unstructured domain governs where grid generation takes place. An unstructured domain
can be built from one or more surface sets. When only one shell is specified, grid generation will occur strictly
inside that shell (i.e. the domain orientation vectors will point inside the domain). Subject to the following rules,
domains can be built from multiple shells:
• One of the shells (the outer set) must fully enclose the remaining shells
• No two interior shells in a Domain can share common areas or volumes
• No interior shell can share a common area with the shell
In domains containing multiple shells, grid generation will occur between the outer and inner shells (as directed by
the domain orientation vectors). Shells can belong to more than one domain. For example, in the box-in-a-box
example, a domain has been built from two shells (a small box and a large box. The volume between the boxes will
be gridded. A second domain can be created from shell representing the small box. In this case, grid generation will

179
CFD-GEOM V2014.0 User Manual

occur inside the small box. From a volume condition standpoint, the two domains represent separate volumes.
However, they share a common surface triangulation on the smaller box.
Before invoking the unstructured grid generation algorithm, you must organize the shells into a solid region or
unstructured domain. An unstructured domain consists of one or more shells and may include externally read
triangulations.

Add an unstructured domain


1. Click the Unstructured Domain button from the Solid and Wireframe Options toolbox. The Status Line
prompts you to select shells to form an unstructured domain.

2. Select the shell using the blue handle in the middle of the surface or use Ctrl-A to select all visible shells.

3. Click the middle mouse button to complete the set and create the unstructured domain. A magenta-
colored arrow is created over the shell arrow. This is the handle for the Unstructured Domain.

Thin Wall Surfaces


The Thin Wall Surface tool allows you to embed surfaces in the interior of an unstructured domain to model "Thin
Walls" (see "Thin Wall Boundary Conditions" in the CFD-ACE User Manual). Thin Walls can be used to represent
baffles, plates, etc. whose thickness is negligible and need not be meshed, but whose area is non-negligible and
can impact the physics of a problem (such as momentum and heat transfer). Within CFD-GEOM, unstructured
domains must be manifold (i.e. every line/curve/edge in a domain must be shared by exactly 2 surfaces/faces).
Embedding thin wall surfaces into a domain instructs the tetrahedral mesher that, during the meshing process, the
meshes on any flagged surfaces should be included in the final tetrahedral mesh. Moreover, it permits the
assignment of boundary conditions to those surfaces and subsequent output to DTF. Finally, it adds special data to
those surfaces that assists downstream applications in identifying thin wall surfaces.

Thin Wall Surfaces Button

Add Baffle to Domain Panel

Add a Thin Wall


1. Open the Thin Wall Surface tool in the Shell and Domain Creation toolbox.

2. Select an unstructured domain. Any thin wall surfaces associated with the domain are drawn in cyan.

180
Geometry Tab

3. Select a surface in the domain interior and press "Add". Note that the surface may be freestanding or it
may be connected to other surfaces that form the domain. If it touches the domain boundaries in any
way, it must not do so arbitrarily, but rather must share lines/curves/edges with the bounding surfaces.
CFD-GEOM does not currently verify this condition, nor whether the surface lies in the domain interior.
Failure to observe these requirements will result in a failure in tetrahedral meshing.

4. Mesh the surfaces and volume. Note that thin wall surfaces will automatically be tagged for "Local Thin
Wall Processing" during surface meshing. This step is critical to ensure proper behavior in later steps. If
you’ve already meshed such surfaces before tagging them as thin wall surfaces, please make sure that you
remesh them before tetrahedral meshing.

5. Write the mesh to a DTF file.

6. Run the DTF utility "thin-wall-preprocess" on the file. This utility uses special tags written with the thin
wall surfaces to make them suitable for usage in CFD-ACE.

Remove a Thin Wall


1. Open the Thin Wall Surface tool in the "Shell and Domain Creation" toolbox.

2. Select an unstructured domain. Any thin wall surfaces associated with the domain are drawn in cyan.

3. Select a thin wall surface currently associated with the domain and press "Remove". Note that this does
not actually delete the surface. It merely disassociates it from the domain.

Note Please note the following additional behaviors:

• Thin Walls are not, from a CAD standpoint, considered part of a domain’s definition, but are rather a
special mesh generation and mesh I/O construct. They can be added or removed without destroying a
domain, and they do not participate in certain operations such as Booleans, model splitting, model
inversion etc; nor are they output to CAD formats such as SAT.

• When disassociating a surface from a domain that was previously (tetrahedral) meshed with the surface,
the surface’s mesh will still be present in the tetrahedral mesh. However, during DTF output, the face’s
that form the surface mesh will receive no special treatment.

Box Creation
Use the Box Creation tool to create a box solid (unstructured domain).

Box Creation Button

181
CFD-GEOM V2014.0 User Manual

Box Creation Panel

Add a Box
1. Click the Box Creation button in the Solid and Wireframe Creation toolbox.

2. Select the required mode of operation: Two points, Existing line, or Center and Dimensions.

3. In the case of Two points or Center and Dimensions, points may be selected from the screen to specify
the data. In the Existing line case, any line can be selected.

In the Two points selection mode, CFD-GEOM keeps track of the corner point being selected. During any
of the modes an automatic preview of the box is shown with the appropriate labeling as it pertains to the
current box specification mode.

4. Optionally, you can uncheck the Create Solid check box to disable the creation of a solid; instead, only
surfaces will be created.

Note Constant X and Y boxes are not available; however, a constant Z box (a single surface) can be
created.

Cylinder Creation
The Cylinder Creation tool allows the creation of a right circular or elliptic cylindrical solid (unstructured domain).

182
Geometry Tab

Cylinder Creation Button

Cylinder Creation Panel

Add a Cylinder
1. Click the Cylinder Creation button in the Solid and Wireframe Creation toolbox.

2. Select the required mode of operation: Two points or Existing line.

3. In the case of Two points, points may be selected from the screen to specify the cylinder axis. In the case
of Existing line, any line can be selected to specify the cylinder axis.

In the Two points selection mode, CFD-GEOM keeps track of the end point being selected. During any of
the modes an automatic preview of the cylinder is shown with the appropriate labeling as it pertains to
the current cylinder specification mode.

4. Optionally, you can uncheck the Create Solid check box to disable the creation of a solid; instead, only the
surfaces will be created.

Note Different major and minor radius will generate an elliptical cylinder and the minor radius must be
less than or equal to the major radius. The top radius can be smaller or larger than major or minor radii.

183
CFD-GEOM V2014.0 User Manual

Invert Model
The Invert Model tool allows for the inversion of Unstructured Domains to attain the fluid region of a geometry.
When reading CAD models, the solids are read into CFD-GEOM. If the solids, i.e. Unstructured Domains, read in
properly, the model is ready to be inverted.

The following are restrictions/suggestions for inverting models in CFD-GEOM:

• Available for inverting Unstructured Domain(s) not constructed from Edges, Faces, nor Discreet Surfaces

• The domain(s) must have defined cap-able inlet/outlet holes.

• Except at the caps, the domain(s) must have a finite thickness throughout, i.e. it must be a solid
(Unstructured Domain in CFD-GEOM).

• Model inversion is not part of the Undo system, so be sure to save the model before inversion.

• Ideally, inversion should be done immediately after the model has been read into CFD-GEOM.

• Option to discard or keep the original solid.

Invert Model Button

Invert Unstructured Domains Pane

Invert a model
1. Read the CAD model into CFD-GEOM.

2. Identify the capable inlet and outlet surfaces in the model.

3. Go the the Invert Model tool and select the inlet and outlet surfaces that cap the model.

4. Click the Apply button to invert the model.

184
Geometry Tab

Split Model
The Split Model tool allows for unstructured domains to be split at an arbitrary plane. The tool automatically builds
new surfaces along the plane to properly close off the new solids and provides the option to keep or discard the
solids on either side of the plane whether or not splitting occurs. This makes it easy to discard undesired geometry.
There are a number of caveats to using this tool:

• Inversion can only be performed on unstructured domains that are not constructed from edges, faces, or
discrete surfaces.

• The tool will not work if any semi or structured domains intersect the cutting plane.

• Some types of data such as BC's and meshing parameters may be lost.

• This operation is not undo-able.

This operation should be performed as the first step before construction of any CFD-GEOM specific solids such as
structured, semi-structured domains and before meshing and BC/VC assignment.

Split Model Button

Split Model at plane Panel

Split a model
1. Read the CAD model into CFD-GEOM or create an unstructured domain in CFD-GEOM.

2. Select the Split Model tool.

3. Select the plane and specify the depth at which to split the model, as shown in the figure below.

185
CFD-GEOM V2014.0 User Manual

4. Click the Apply button to split the model.

Solid Booleans
The new Solid Booleans tool, located in the Solid and Wireframe Options toolbox, allows for 4 types of Boolean
operations (unite, subtract, intersect, interface) on unstructured domains.

Note: Boolean operations can not be performed on "hybrid" domains (i.e. domains constructed from edges,
structured faces, and/or discrete surfaces). Moreover, these operations will usually split, delete, and create new
lines, curves, surfaces, and domains. Hence, it is possible that certain types of data such as boundary/volume
conditions and meshing parameters may be lost. It is, therefore, recommended that you perform all Boolean
operations prior to introducing structured/semi-structured/discrete topologies, BC/VC assignment, or mesh
generation.

Note also that, with the exception of the "Interface Domains" option, Boolean operations in CFD-GEOM involve a
set of 1 or more "tool" domains that are used to operate on a "blank" domain. This usage of the word "blank"
should not be confused with blanking/unblanking pertaining to entity visibility.

Solid Booleans Button

Solid Booleans Panel

UNITING DOMAINS

Uniting domains allows you to combine 2 or more unstructured domains into a single domain. Where necessary,
lines, curves, and surfaces will be split and all entities that lie in the interior of the new volume will be deleted
except for those used by other entities not involved in the operation.

Unite domains
1. Click the Solid Booleans button and select Union.

2. Select the blank domain.

186
Geometry Tab

3. Select one or more tool domains (no preview is available).

4. Press middle-mouse button or click Apply to complete the operation.

SUBTRACTING DOMAINS

One can also subtract tool domains from a blank domain. In a simple example, one might use a cylindrical domain
to cut a hole in another domain. Where necessary, lines, curves, and surfaces will be split. In addition, those
portions of the tool domains that lie outside the new domain will be discarded (except where they are used by
other entities not involved in the operation).

Subtract domains
1. Click the Solid Booleans button and select Subtraction.

2. Select the blank domain.

3. Select one or more tool domains to subtract from the blank domain.

4. Press the middle-mouse button or click Apply to complete the operation.

187
CFD-GEOM V2014.0 User Manual

INTERSECTING DOMAINS

Using the Intersection option, new domains can be created where the volumes of the tool domains overlap the
blank domain. When intersecting more than one tool domain with the blank domain, a new domain is created at
the intersection of each tool with the blank. The result is as if the tool domains were first united and then
intersected with the blank domain. Where necessary, lines, curves, and surfaces will be split, created, or deleted.
All portions of the input domains that lie outside the new domains are deleted, except when used by other entities
not involved in the operation.

Intersect domains
1. Click the Solid Booleans button and select Intersection.

2. Select the blank domain.

3. Select one or more tool domains to intersect with the blank domain.

4. Press the middle-mouse button or click Apply to complete the operation.

188
Geometry Tab

INTERFACING DOMAINS

Interfacing domains contains elements of union, subtraction, and intersection and is therefore included in this tool.
Interfacing domains allows you to mate adjacent (and possibly overlapping) domains to eliminate arbitrary
interfaces between them. Ordinarily, this function is used to mate two adjacent domains with overlapping surfaces
at their adjacency. In such cases, the overlapping surfaces will be split until both domains share a common surface
at the adjacency, enabling them to be meshed without an arbitrary interface. In cases where the volumes of 2
domains overlap, the domains will be split into 3 domains consisting of the volume occupied exclusively by the first
domain, the volume occupied exclusively by the second domain, and the volume representing the intersection of
the 2 original domains. Unlike union, subtraction, and intersection, interfacing does not involve the notions of
"blank" and "tool" domains. This operation is similar to the "Interface Parts" options available during import of
SAT, Parasolid, STEP, and other CAD files.

Interface domains
1. Click the Solid Booleans button and select Interface Domains.
2. Select two or more adjacent or overlapping unstructured domains.
3. Press the middle-mouse button or click Apply to complete the operation.

Transform/Duplicate Entities

Transform or Duplicate/Transform Entities


The Transform or Duplicate/Transform Entities tools enable you to move objects. The options for translating are:

• Translate Entities
• Rotate Entity
• Scale Entity
• Scale All
• Mirror Entity

189
CFD-GEOM V2014.0 User Manual

• Axial Scaling
• Project Entities

Transform or Duplicate/Transform Entities Buttons

Translate Entities
Selecting the Translate Entities enables you to translate entities using vector translation or point-to-point
translation. Selecting either of the vector translation options opens the Extrusion Axis Panel in the Control Panel
for specifying translation direction and distance.

Translate Entity Button

190
Geometry Tab

Translate Entities Panel

Translate an object
1. Click the Translate button in the Transform or Duplicate/Transform Entities toolbox. The Status Line
prompts you to select a set of entities to translate.

2. Select the entities in the graphics area that you want to translate and click the middle mouse button to
complete the selection. The entity turns red and the Translate Entities panel appears. The Status Line
prompts you to select a translation mode.

3. Select one of the following translation modes:

X, Y, or Z - Click any of these options to translate in that particular direction.

191
CFD-GEOM V2014.0 User Manual

Existing Line - Prompts you to pick a line for translation. The vector will then be defined as the vector
from the line's start point to the line's end point.

Point-Point - Enables you to pick two point entities to define your vector. After picking two points, the
translation vector is defined as the vector between the first and second picked points. If you select the
Vector option, the text field showing the current translation vector becomes active.

Vector - Enables you to define the translation vector. Note that it is not necessary to normalize the vector
yourself.

Screen Normal - Translates in a direction normal to the screen. This vector can be changed by rotating the
model view. Note that for all of these options, it is not necessary for the translation vector to be
expressed as a normalized vector. CFD-GEOM will automatically normalize the vector when it actually
performs the translation.

4. Enter the translation distance in the Translation Distance field.

5. Click the Duplicate box in the in Options section to duplicate the entities if you want to copy and translate
them rather than translate the original entities.

6. Click Preview to preview the result. Click Apply to translate the entities. Click Cancel to cancel the
operation.

Rotate Entity
The Rotate Entity tool enables you to rotate an entity on an axis. Any entity, including structured or unstructured
grid entities, can be selected for rotation in this option. Once the rotation axis is selected, you can then set the
Rotation Angle from this panel, for example; 45 degrees. Repeat performs the operation n times; that is, for n = 1,
a selected entity is revolved from 0 to 45 degrees. For n = 2, the entity is revolved from 0 to 45 degrees and from
45 to 90 degrees, etc.

The Preview button identifies the rotation direction. The panel shows the rotated positions of points associated
with the chosen entities. The Apply button applies the rotation operation. Note that all entities associated with the
selected entities, e.g., the lines and curves which constitute an edge, are also rotated. If the Duplicate box is
checked, a new duplicate entity will be created. Note that any entity may be selected and all associated entities
will be duplicated and rotated.

Rotate Entity Button

192
Geometry Tab

Rotate Entities Panel

Rotate an entity
1. Click the Rotate Entity button in the Transform or Duplicate/Transform Entities toolbox. The Rotate
Entities Panel appears and the Status Line prompts you to select the entity you want to rotate.

2. Select the entity you want to rotate in the graphics area. Its color changes to red to indicate that it has
been selected. The Status Line prompts you to select a rotation mode.

3. Choose from the following rotation modes:

193
CFD-GEOM V2014.0 User Manual

X - rotate on the X-axis. This option activates an additional portion of the panel so you can specify the
vector, rotation angle, and the number of times to repeat the rotation.

Y - rotate on the Y-axis. This option activates an additional portion of the panel so you can specify the
vector, rotation angle, and the number of times to repeat the rotation.

Z - rotate on the Z-axis. This option activates an additional portion of the panel so you can specify the
vector, rotation angle, and the number of times to repeat the rotation.

Existing line - Rotate on a selected line

Point - Point - Two points define a rotation axis

3-Point -This option allows you to rotate an entity about any arbitrary point in any direction. After
selecting the entity to be rotated, you then select the point about which rotation is to occur. A start point
and end point are then specified. These two points define the angle of rotation with respect to the center
of rotation. These two points and the center of rotation also define the plane in which the rotation occurs.

Point and Direction - This option allows you to select the start point for the axis of rotation, then specify a
dx, dy, and dz to complete the axis.

Two Coordinate Sets - This option allows you to specify the start and end point for the axis of rotation.

Note The main distinction between this option and the "two points" option has to do with scripting. If
you use the "2 points" option, then a journaled script will use the 2 point entities. If the point locations
change between script runs, the rotation axis will move with the points. If you use the "two coord sets"
option, the rotation axis will always remain fixed (unless you do something in the script to change the
coordinates). They will not be tied to two point entities.

4. Enter the rotation angle degrees in the Rotation Angle field.

5. Enter the number of times you want to rotate the entity in the Repeat field.

6. If you want to duplicate the entity, click the Duplicate box. If you want a pattern to appear, click the
Pattern box.

7. Click Preview to preview the revolution or Apply to apply the settings.

Scale Entity
The Scale Entity tool enables you to scale non-uniform entities in the X,Y, and Z directions.

Scale Entity Button

194
Geometry Tab

Scale Entities Panel

Scale an entity
1. Click the Scale Entity button in the Transform or Duplicate/Transform Entities toolbox. The Scale Entities
panel appears and the Status Line prompts you to select entities for scaling.

2. Select the entities you want to scale in the graphics area and click the middle mouse button to complete
the selection. The Status Line prompts you to select/specify a reference point to set the parameters.

3. Enter the X, Y, and Z scale factors in the Factors field.

4. Enter the X, Y, and Z reference points, (the location for the origin of a local Cartesian coordinate system
about which the scaling is to be performed) in the Ref. Point field or pick the point interactively.

5. Click Preview to see the result or click Apply or middle mouse button to complete the operation. You can
toggle on the duplicate option to keep the original entities intact while creating new ones based on the
scaling factors.

195
CFD-GEOM V2014.0 User Manual

Note When scaling entities, careful attention must be paid to the value of the global geometric precision. If using
scaling factors less than 1.0, it is possible for the model (or portions thereof) to be scaled below geometric
precision. In such cases, geometry/topology changes. For example, suppose that the global precision is 1.0e-6 and
the model contains a line of length 1.0e-5. Now suppose that the model is scaled uniformly by 0.01. The new line
will have length 1.0e-7. Because this is less than geometric precision, the end points of the line will be collapsed
into a single point, and the line will be removed. Any structured or unstructured topologies built on this line may
be adversely affected. To prevent such problems, you should lower the geometric precision by an appropriate
amount before scaling.

Scale All
The Scale All tool scales all of the entities in a model in the X, Y, and/or Z directions.

Scale All Entities Button

Scale All Entities Panel

Scale all entities


1. Click the Scale All button in the Transform or Duplicate/Transform Entities toolbox. The Scale All Entities
panel appears and the Status Line prompts you to select the entities for scaling.

2. Enter the X, Y, and Z scaling factors in the Factors field.

3. Select the entities you want to scale in the graphics area.

4. Click Apply to scale the model according to the scaling factor values entered. A scaling factor of zero in
multiple directions is not allowed. A scaling factor of -1.0 mirrors the model in a particular direction.

196
Geometry Tab

Note When scaling entities, careful attention must be paid to the value of the global geometric precision. If using
scaling factors less than 1.0, it is possible for the model (or portions thereof) to be scaled below geometric
precision. In such cases, geometry/topology changes. For example, suppose that the global precision is 1.0e-6 and
the model contains a line of length 1.0e-5. If the model is scaled uniformly by 0.01, the new line will have a length
of 1.0e-7. Because this is less than geometric precision, the end points of the line will be collapsed into a single
point, and the line will be removed. Any structured or unstructured topologies built on this line may be adversely
affected. To prevent such problems, lower the geometric precision by an appropriate amount before scaling.

Mirror Entity
The Mirror Entity tool mirrors selected entities about a constant X, Y, Z or arbitrary plane.

Mirror Entity Button

Mirror Entities Panel

Mirror an entity
1. Click the Mirror Entity button in the Transform or Duplicate/Transform Entities toolbox. The Mirror
Entities panel appears and an outline representation of the mirroring plane appears in the graphics
window. The Status Line prompts you to select an entity.

2. Select one of the following mirroring options:

XY, YZ, XZ - When selecting an X, Y, or Z constant mirroring plane, the location of the mirroring plane can
be specified via the Depth field or interactively selected by picking a point from the graphics window.

Point - When a point is selected, the appropriate coordinate will appear in the Depth field and the
mirroring plane outline will be updated.

197
CFD-GEOM V2014.0 User Manual

Construction Plane - When a Construction Plane is selected, it enables you to set the mirroring plane to
that specified for the current construction plane thus allowing for an arbitrary mirroring plane. Selecting
this option disables point selection in the graphics window and disables the Depth field.

3. Select the entities to be mirrored and click the middle mouse button to complete the set. The Status Line
prompts you to enter the plane depth.

4. Enter the depth in the Depth field. If you check the Duplicate box, a new duplicate entity will be created.

5. Click Preview to see the result or click Apply or the middle mouse button to complete the operation. You
may toggle on the duplicate option to keep the original entities intact while creating new ones.

Axial Scaling
The Axial Scaling tool scales entities about any user-specified axis. For each selected entity, the underlying points
(point entities and control points) are collected. For each point p1, CFD-GEOM computes the following

• p0 - the coordinates of the point (on the axis) that lies closest to point p1

• v - the vector running from p0 to p1

The new location of p1 is computed as: p1' = p0 + v * scale_factor

Note This is equivalent to constructing a cylindrical coordinate system about the axis, expressing each point in
cylindrical coordinates (r, theta, z), and multiplying the r component by the scale factor. A typical use of this tool is
in scaling a cylindrical surface about its own axis.

Any affected structured and prismatic grids are automatically updated. For edges with hyperbolic tangent
distributions based upon absolute end point spacings, CFD-GEOM will attempt to make the appropriate
adjustments to the spacings. However, for edges built on curves, a small amount of error may be introduced. In
most cases, this is unavoidable and may require correction.

Axial Scale Entity Button

198
Geometry Tab

Axial Scale Entity Panel

Axial scale entities


1. Click the Axial Scale Entity button in the Transform or Duplicate/Transform Entities toolbox. A blank Axial
Scale Entities panel appears and the Status Line prompts you to select the entities to scale.

2. Select the entities you want to scale in the graphics area and click the middle mouse button to complete
the set. The full Axial Scale Entities panel appears and the Status Line prompts you to select an axis.

3. Choose one of the following scaling modes from the Axial Scale Entities panel:

X - revolve on the X-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

199
CFD-GEOM V2014.0 User Manual

Y - revolve on the Y-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Z - revolve on the Z-axis. This option activates an additional portion of the panel so you can specify the
vector and revolution angle.

Existing line - revolve on a selected line.

Two Points - Two points define a revolution axis.

-.

4. Enter the scaling factor in the Scaling Factors field. Check the Duplicate box if you want a duplicate.

5. Click Apply or the middle mouse button to scale the model according to the scaling factor values entered.
A scaling factor of zero in multiple directions is not allowed.

Project Entities
The Project Entities tool projects a set of entities to a set of surface entities; version 2013.0 supports the projection
of entities onto discrete surfaces as well as the traditional CAD surfaces. The projection algorithm projects the
entity set in one of four ways: along X axis, along Y axis, along Z axis, or closest point; you choose the method.

Project Entities Button

200
Geometry Tab

Project Entities Panel

Project a set of entities onto a surface set


1. Select the surface set.

2. Click the Project button in the Transform or Duplicate/Transform Entities toolbox.

3. Select the set of entities to project.

4. Select the method of projection.

201
CFD-GEOM V2014.0 User Manual

5. Click the Preview button to preview the projection to ensure that the result is satisfactory.

6. Click the Apply button to project the entities. All higher level entities of the projected set are
automatically updated. After projecting entities to a surface set, CFD-GEOM automatically updates all
associated entities in the database. If the Duplicate box is checked, then entities picked first will be
duplicated and then projected.

Splitting/Joining Tools

Split/Join
The Split/Join tools enable you to split lines, curves, edges, and surfaces. To split or join and entity, click the
Split/Join tool in the Geometry toolbox. The options for splitting or joining, from right to left, are:

Split Curve or Surface


Split Curve at Point
Split Surface at Point
Split Curve by Plane
Join Curves
Combine Surfaces

Split/Join Options

Split Curve or Surface


The Split Curve or Surface button enables you to split lines, curves, and surfaces at a specified point.

202
Geometry Tab

Split Entity Button

Split Curve/Surface Panel

SPLIT LINES AND CURVES

Split a line or a curve


1. Click the Split Curve or Surface tool in the Split/Join tool box. The Split Curve/Surface panel appears and
the Status Line prompts you to select a line, curve, or a surface to split.

2. Select the line or curve and click the middle mouse button to complete the selection. The Status Line
indicates that the split will occur as shown in the graphics area and to move the U and V Value sliders to
change the parameters or click the middle mouse button to apply the split.

3. Enter the value of a parametric point at which to split the line or curve, or use the slider bar to
interactively increase or decrease the parameter value. The parametric point is displayed on the line or
curve for visual guidance. The model space coordinates of this point are displayed in the lower left corner
of the graphics area.

4. Click the Split button to split the entity or click the Put Point button to put a point on the line or curve
without splitting it. Click Cancel to cancel the operation.

If higher level entities such as loops or edges reside on top of a split line or curve, CFD-GEOM
automatically updates those data structures. This is a very important feature for controlling the
unstructured surface gridding algorithm and is also extremely important during multi-block structured
grid generation for topological modifications.

SPLIT SURFACES

Trimmed and Untrimmed Surface entities can be split along their isoparametric u,v curves.

203
CFD-GEOM V2014.0 User Manual

Split a surface
1. Select either a Surface entity or an Untrimmed Surface entity. The U and V text fields and sliders will
become active, and isoparametric curves will be displayed based upon the current values. If the surface is
a trimmed Surface entity, these curves will be trimmed to the surface boundaries, including any holes in
the surface. Initially, these curves will be placed in the approximate center of the surface, so that they are
guaranteed to be visible immediately after the surface is picked. If the selected surface is an Untrimmed
Surface entity, the entire U and V isoparametric curves will always be drawn at the default or most
recently used values.

2. Set the desired U and V values. For both surface types, new isoparametric curves will be computed and
drawn with each change. If the selected surface is a trimmed Surface entity, the U and/or V curve(s) will
not be drawn if the corresponding value would place the curve(s) outside the outermost loop of trimming
curves.

3. Press middle-mouse or the "Split” button to perform the split. Alternatively, you may press the "Put
Curves” button to create the isoparametric curves without splitting the surface. A third option is "Put
Point”, which will simply create a Point entity at the intersection of the isoparametric curves without
actually creating the curves or splitting the surface.

Please note the following behaviors/restrictions for trimmed Surface entities

• If both U and V values are outside the surface boundaries, neither "Split”, "Put Curves”, nor "Put Point”
will have any effect.
• If either U or V values are inside the surface boundaries, either 2 or 4 new surfaces will usually be created
during a split. However, depending upon the shape of the surrounding trimming curves, 3, 5 or more
surfaces may be created.
• If the intersection of the isoparametric curves lies outside the outer boundaries of the surface or inside a
hole, "Put Point” has no effect.
• Surfaces used in the construction of semi-structured domains can not be split. Otherwise, all higher-level
entities derived from the surface (such as Shells) will be automatically updated, and the original surface
will be deleted.

Please note the following behaviors/restrictions for Untrimmed Surface entities

• If both U and V values lie on the boundaries of the untrimmed surface, splitting will not be performed.
The "Put Point” and "Put Curves” options, however, are still available.
• If either U or V (but not both) values lie on the surface boundary, 2 surfaces will be created during a split.
If neither lies on the surface boundaries, 4 new surfaces will be created. In either case, the original surface
will be deleted, and any higher-level entities (such as Faces that were projected to the surface) will be
updated.
• Untrimmed Surfaces used in the construction of Trimmed Surface entities can not be split.

Split Curve at Point


The Split Curve at Point tool splits a line or curve entity at the closest parametric position to a point that you have
specified.

204
Geometry Tab

Split Curve at Point Button

Split Curve at Point Panel

Split a curve at a point


1. Click the Split Curve at Point button in the Split/Join toolbox. The Split Curves at Points panel appears and
the Status Line prompts you to select a line/curve to split at a point.

2. Select the line or curve in the graphics area and click the middle mouse button. The line turns red and the
Status Line prompts you to select a point to split the line.

3. Click the Put Point button to create a point at the position where you want the split to occur. If the point
is exactly on the line or curve entity, the entity is split exactly at that point. If the point is off of the entity,
the closest orthogonal projection of that point onto the entity is chosen as the split point.

4. Click the Split button or the middle mouse button to split the line.

Split Surface at Point


The Split Surface at Point tool splits a surface entity at the closest parametric position to a point that you have
specified. Please see the graphics from split curve at point for example of capture

Split Surface at Point Button

Split Surface at Point Panel

205
CFD-GEOM V2014.0 User Manual

Split a surface at a point


1. Click the Split Surface at Point button in the Split/Join toolbox. The Split Surface at Point panel appears
and the Status Line prompts you to select a surface to split at a point.

2. Select the surface in the graphics area and click the middle mouse button. The surface turns red and the
Status Line prompts you to select a point to split the surface.

3. If the point is exactly on the surface entity, the surface is split exactly at that point. If the point is off of the
entity, the closest point projection of that point onto the entity is chosen as the split point.

4. Click the Split button or the middle mouse button to split the surface (the Put Curves option will only
create new curves and the surface will not be split.

Split Curve by Plane


The Split Curve at Plane tool enables you to split a selected set of curves by a constant X,Y, Z or an arbitrary plane.

Split Curve by Plane Button

Split Curve(s) at Plane Panel

Split a curve at a plane


1. Select the curves to be split and click the middle mouse button to complete the set. The splitting panel
specifies the mirroring plane and an outline of the splitting plane appears in the graphics window.

2. Where an X, Y, or Z constant splitting plane is selected, the location of the plane can be specified via the
Depth field or interactively selected by picking a point from the graphics window.

206
Geometry Tab

3. Where a point is selected, the appropriate coordinate will be loaded into the Depth field and the
mirroring plane outline will be updated.

4. Click the Split Curve by Plane button in the Split/Join toolbox to set the splitting plane to that specified for
the current construction plane; allowing for an arbitrary splitting plane. Selecting this option disables
point selection in the graphics window and disables the Depth text field.

5. Click Preview to see the result.

6. Click Split to split the curves or click Put Point to place points without splitting the curves.

7. Press the 'q' key on the keyboard to quit the split mode.

Join Curves
The Join Curves option is the inverse operation to the Split Curve function. By selecting a series of connecting line
and/or curve entities, CFD-GEOM creates a new curve from the concatenation of the input entities.

Note All associations from the input set are updated with the new curve entity. This function does not allow
joining if the higher level entities of the input set are not the same.

Join Curves Button

Join Curves Panel

Join curves
1. Click the Join Curves button in the Split/Join toolbox. The Join Curves panel appears and the Status Line
prompts you to select the lines or curves that you want to join.

2. Select the lines or curves in the graphics area that you want to join.

3. Click Preview to preview the joined curves. Click Apply to join the curves.

207
CFD-GEOM V2014.0 User Manual

Combine Surfaces
The Combine Surfaces tool, located in the Geometry Splitting/Joining Options toolbox, allows you to join 2 or more
trimmed Surface entities to form a single trimmed Surface. This can be useful when you need to perform one or
more of the following:
• Eliminate silver surfaces imported from CAD models. Such surfaces are often generated by modeling
functions in various CAD systems and are usually not inserted intentionally by the CAD user. Mesh
generation on such surfaces often results in unnecessary mesh clustering and poor quality triangles
and/or quads.
• Simplification of models by reducing the number of surfaces - hence, reducing the number of boundary
conditions in 3-D models and volume conditions in 2-D models.
Combining surfaces is subject to the following constraints:
• The input surfaces must be properly connected. By traversing trimming lines/curves, every surface must
be reachable from every other surface in the input set. Moreover, the collection must not contain any
branches. In other words, it should not be possible to "walk" from one surface to 2 or more adjacent
surfaces through a single trimming curve.
• Exactly the same set of child (higher-level) entities must be derived from them. For example, CFD-GEOM
will not join surfaces that don't form the boundaries of exactly the same set of shells.
• Surfaces used in the construction of semi-structured domains cannot be joined.
• CFD-GEOM must be able to cover the input surfaces with a single surface. In a planar collection of
surfaces, this is always possible. However, in non-planar collections, this is not always possible.
Improvements to this capability will be added in future releases.

Combine Surfaces Button

Join Surfaces Panel

Combine Surfaces
1. Click the Combine Surfaces button in the Split/Join toolbox. The Status Line prompts you to select the
trimmed Surface entities that you want to join.

2. Select 2 or more trimmed Surface entities that satisfy the above constraints.

3. Press the middle-mouse button or Apply to combine the surfaces. If successful, the original surfaces will
be deleted and higher-level entities derived from them will be updated.

Tips

• After combining thin silver surfaces with larger surfaces, you may want to use the Minimize
Curves tool or the Join Curves tool to eliminate small curves that bound the silver surfaces.

208
Geometry Tab

• You should avoid combining surfaces that do not join smoothly at their adjacencies. Though it is
often possible to do so, it can introduce severe discontinuities into the new surface that can lead
to problems in later geometric operations involving this surface, and to mesh generation
problems.

• The combine surfaces is now more robust and allows the joining of non-planar surfaces to give
results that more closely follow the original geometry it is suggested that you mesh the surfaces
to be joined.

Intersection Tools

Intersect Entities
The Intersect tools enable you to intersect geometry entities. To intersect geometries, click the Intersect tool in the
Geometry toolbox. The options for intersecting geometries, from right to left, are:

Intersect Two Entities


Intersect Entity Sets
Intersect Surface/Plane
Extend Lines to Intersection

Intersect Buttons

Intersect Two Entities


The Intersect Two Entities tool enables you to compute the intersection of any two entities, including lines, curves
and surfaces.

209
CFD-GEOM V2014.0 User Manual

Intersect Two Entities Button

Intersect Two Entities Panel

Intersect two entities


1. Click the Intersect Two Entities button in the Intersect toolbox. The Intersect Two Entities panel appears
and the Status Line prompts you to select two lines, curves, or surfaces to intersect.

2. Select two lines, curves, or surfaces in the graphics area. A new green point appears at the proposed
intersection, and the Status Line indicates that one point will be created where the entities intersect.

3. Click the Intersect button or click the middle mouse button to complete the selection and create the
point. If only one intersection point is found, click Trim to trim the lines or curves at the intersection point
and trim the two lines or curves into four new segments. The Control Panel displays the minimum
distance between the points evaluated on the two curves. This distance can be used to keep or throw
away the points evaluated.

Note If the Trim option is used and higher level entities, such as loops or edges, exist on the trimmed lines or
curves, these higher level entities are automatically updated by CFD-GEOM. This is a very important feature for
controlling the unstructured surface gridding algorithm and is also extremely important during multi-block
structured grid generation for topological modifications.

Intersect Entity Sets


The Intersect Entity Sets tool intersects two entity sets and requires no user input.

Intersect Entity Sets Button

210
Geometry Tab

Intersect Two Entity Sets Panel

Intersect two entity sets


1. Click the Intersect Entity Sets button in the Intersect toolbox. The Intersect Two Entity Sets panel appears
and the Status Line prompts you to select two sets of lines, curves, or surfaces to intersect.

2. Select two sets of entities as follows:

Use the left mouse button to pick the first set. This set is drawn in red. Click the middle mouse button to
end the first set selection.

Use the left mouse button to select the second set. This set is drawn in cyan. Click the middle mouse
button to end the second set selection.

3. Click Apply to intersect the two entity sets.

Note The intersection method is an iterative numerical scheme that attempts to converge the calculations to the
value specified for the geometric precision. In those cases where the method fails, and it is known that an
intersection should occur, decreasing the geometric precision may allow the intersection to converge to the
desired result.

Intersect Surface/Plane
The Intersect Surface/Plane tool creates curves by intersecting surface entities with a plane. The plane can be
specified at a constant X, Y, or Z value. Alternatively, the current construction plane can be specified.

Intersect Surface/Plane Button

211
CFD-GEOM V2014.0 User Manual

Surface/Plane Intersection Panel

Intersect a surface with a plane


1. Click the Intersect Surface/Plane button in the Intersection toolbox. The Surface/Plane Intersection panel
appears and the Status Line prompts you to select the surfaces to intersect.

2. Choose how you want the intersection to occur by selecting one of the following from the Options
selection:

o When an XY, YZ, or XZ surface is selected, the location of the plane can be specified via the Depth
field or interactively selected by picking a point in the graphics window.

o When a point is selected, the appropriate coordinate will appear in the Depth field and the plane
outline will be updated.

o When Construction Plane is selected, it enables you to set the plane to that specified for the
current construction plane, thus allowing for an arbitrary plane. Selecting this option disables
point selection in the graphics window and disables the Depth field.

3. Select one or more surfaces and click the middle mouse button to complete the selection. The Status Line
prompts you to set the plane depth.

4. Enter the plane depth and click the Preview button to preview the intersection.

5. Click the Intersect button or middle mouse button to apply the intersection.

Extend Lines to Intersection


The Extend Lines to Intersection tool enables you to intersect lines and extend them to their intersection point or
to trim them at the intersection point.

212
Geometry Tab

Extend Lines to Intersection Button

Intersect/Extend Lines Panel

Extend lines at an intersection


1. Click the Extend Lines to Intersection button in the Intersect toolbox. The Intersect/Extend Lines panel
appears and the Status Line prompts you to select two lines to be extended at intersection.

2. Select two lines in the graphics area. The Status Line indicates that the lines will be extended to the point
shown.

3. Click Apply to extend the lines to the computed intersection. Click Cancel to cancel the operation.

Discrete Surface Modeling Tools

Discrete Surface Modeling


The Discrete Surface Modeling tools allow for users to work with geometries that are described only by mesh data.
The tools work only with triangles, and thus all quads will automatically be split into triangles. The following tools
are available:

Fit Through Lines


Fit Through Outlines
Surface > Discrete
Discrete > Surface
Smooth Discrete Surface
Consistent Orientation
Merge or Join Discrete Surfaces
Merge Nodes
Outline and Critical Features
Intersect

213
CFD-GEOM V2014.0 User Manual

Intersect with Plane


Boolean Operations
Mesh Discrete Surfaces
Shrinkwrap Discrete Surfaces
Separate Discrete Surfaces

Discrete Surface Modeling Buttons

Some possible uses of the tools include:

• Allows users to work with meshed surfaces imported from external grid formats such as
NASTRAN/PATRAN, STL, FAST, and DTF

214
Geometry Tab

• Tools implemented to allow manipulation and creation of discretely defined geometries

• Conversion of CAD surfaces to discrete

• Creation of discrete surfaces based on a set of lines to fill holes

• Reverse engineering of discrete surfaces back to CAD (only planar surfaces) can contain any number of
interior holes

• Smooth discrete surfaces to remove noise

• Consistently orient facets on a discrete surface

• Merge or join (within a prescribed tolerance) surfaces

• Merge nodes on a surface to within a prescribed tolerance

• Outline and critical features

o Works with non-manifold surfaces

o Extract to lines or curve

o Insert outlines/critical features into surface

o Split at outlines and critical features

• General surface/surface and plane/surface intersections

o Extract to lines or curves

o Insert intersections into intersected surfaces

o Split at intersections

o Boolean operations

 Surfaces must be closed

 Unions, Subtracts and Intersections

Fit Through Lines


This tool allows the creation of a discrete surface by selection of two or more lines. The end points of all the line
segments are averaged and then a series of triangles are generated to form the surface. Please note that there is
no error checking to determine if the set of lines are closed and it is possible to generate nonsensical surfaces
which may self-intersect.

215
CFD-GEOM V2014.0 User Manual

Fit Through Lines Button

Fit Surface Through Lines Panel

Create a discrete surface


1. Click the Fit Through Lines button in the discrete surface toolbox. The panel appears and the Status Line
prompts you to select a set of lines.

2. Select two or more lines and then press the middle mouse or the Apply button to create the surface.

Fit Through Outlines

Fit Through Outlines Button

Create Discrete Surface from Outlines Panel

Discrete Surface from Surface


This tool allows you to create discrete surfaces directly from existing trimmed and untrimmed surfaces.

Discrete Surface from a trimmed or untrimmed surface Button

Discrete Surface from Trimmed Panel

216
Geometry Tab

Create discrete surfaces


1. Click the Surface -> Discrete button in the discrete surface toolbox. The panel appears and the Status Line
prompts you to select a set of trimmed and/or untrimmed surfaces.

2. Select two or more surfaces and then press the middle mouse or the Apply button to create the discrete
surfaces.

Surface from Discrete Surface


This tool allows you to create trimmed surfaces directly from existing discrete surfaces. Note that this tool only
works for planar surfaces and non-planar surfaces will be ignored. The planar surfaces can contain any number of
interior holes.

Trimmed Surface from Discrete Surface Button

Trimmed Surface from Discrete Surface Panel

Create trimmed surface from a discrete surface


1. Click the Discrete -> Surface button in the Discrete Surface toolbox. The panel appears and the Status Line
prompts you to select a set of discrete surfaces.

2. Selection of discrete surfaces will activate the "Boundary Type" options. The "Lines" option will give a
series of lines to describe the loops of the trimmed surface while the "Curves" option will attempt to join
as many of the lines of a loop into single curves.

3. Select two or more surfaces and then press the middle mouse or the Apply button to create the trimmed
surfaces.

Smooth Discrete Surface


This tool allows you to smooth discrete surfaces to remove noise or sharp features.

217
CFD-GEOM V2014.0 User Manual

Smooth Button

Smooth Discrete Surface Panel

Smooth a discrete surface


1. Click the Smooth button in the discrete surface toolbox. The Smooth Discrete Surface panel appears and
the Status Line prompts you to select a set of trimmed and/or untrimmed surfaces. A text field is provided
to specify the number of smoothing iterations.

2. Select a single discrete surface and then press the middle mouse or the Apply button to smooth the
discrete surface.

Consistent Orientation
This tool allows you to consistently orient the facets on a discrete surface. On occasion, discrete surfaces can
contain facets which have facet orientations such that the normals are not consistently oriented. Note that non-
manifold surfaces (containing edges with more than two facets) cannot be consistently oriented.

Consistent Orientation Button

Consistent Orientation Panel

Consistently orient facets


1. Click the Consistent Orientation button in the discrete surface toolbox. The panel appears and the Status
Line prompts you to select a set of discrete surfaces.

2. Select a set of discrete surface and then press the middle mouse or the Apply button to orient the
discrete surfaces.

218
Geometry Tab

Merge or Join Discrete Surfaces


This tool allows you to merge or join multiple discrete surfaces into a single surface. The surfaces can be connected
or disconnected. The difference between merge and join is that merge will not connect "close" points and thus
assumes an exact point to point match while the join operation allows the inclusion of a tolerance value where
points whose distance are within tolerance are taken to be equivalent.

Merge or Join Button

Merge/Join Discrete Surfaces Panel

Merge or join discrete surfaces


1. Click the Merge or join button in the discrete surface toolbox. The panel appears and the Status Line
prompts you to select a set of discrete surfaces. A text field is provided to specify the joining tolerance
when the "Join" option is selected.

2. Select a set of discrete surfaces, optionally provide a joining tolerance and then press Apply or middle
mouse to complete the operation.

Merge Nodes
This tool allows you to merge nodes on a surface given a tolerance. On occasion, discrete surfaces may exhibit free
edges in the interior of a surface although, visually there appears to be point to point match. To remove these
spurious free edges this tool will find all points whose distance to one another is within the given tolerance and
make those points equivalent.

Merge nodes Button

219
CFD-GEOM V2014.0 User Manual

Merge Nodes Discrete Surface Panel

Merge nodes on a discrete surface


1. Click the Merge Nodes button in the discrete surface toolbox. The panel appears and the Status Line
prompts you to select a set of discrete surfaces. A textfield is provided to specify the merging tolerance.

2. Select a set of discrete surfaces, provide the tolerance and then press Apply or middle mouse to complete
the operation.

Outline and Critical Features


This tool allows the user to extract outlines (boundaries) and/or critical (sharp) features from discrete surfaces.
Also, the tool allows discrete surfaces to be split at outlines and critical features.

Outlines are the grid segments that lie on the outer boundaries of the surface. If the surface contains any
holes/gaps, the outlines will also include the grid segments that form those holes/gaps. Features are the interior
grid segments that lie between any 2 facets. Whether or not a feature is critical is determined by the feature angle
discussed below.

If extracting lines, a line will be created on each outline and/or feature grid segment. If extracting curve an attempt
will be made to where possible to spline a single curve through the grid points forming connected grid segments.

The feature angle is used only when extracting or splitting at critical features. If the angle between the normals of
any two adjacent facets equals or exceeds this value, the shared edge segment is considered critical and a line or
curve will be extracted across it.

Outlines and Critical features Button

220
Geometry Tab

Outline/Critical Features Panel

Obtain outlines and/or critical features on a discrete surface


1. Click the Outline and critical features button in the discrete surface toolbox. The panel appears and the
Status Line prompts you to select a set of discrete surfaces.

2. Select a set of discrete surfaces then press the middle mouse button to complete the set.

3. Set the desired options and in the case of extracting or splitting with critical features the "Feature Angle"
textfield will become active and allow the input of the desired angle. Press the Apply button or middle
mouse to complete the operation.

Intersect
This tool allows the intersection of discrete surfaces to either extract the intersection (s) as lines or curves,
insertion of the intersection points into the surfaces or splitting of the surfaces at their intersections. Note that this
tool will not detect intersections of coincident surfaces.

Intersect Button

221
CFD-GEOM V2014.0 User Manual

Intersection Panel

Intersect discrete surfaces


1. Click the Intersect button in the discrete surface toolbox. The panel appears and the Status Line prompts
you to select the first set of surfaces.

2. Select the first set of surfaces and complete the set by a press of the middle mouse button. Then the
Status Line will prompt you to select the second set of surfaces.

3. Select the second set of surfaces and complete the set by a press of the middle mouse button. The various
buttons in the panel will activate.

4. Select the desired options and in the case where "Extract" has been selected then the intersections can be
generated either as line segments or curves where possible.

5. Press the Apply or middle mouse button to complete the operation.

Intersect with Plane


This tool allows the intersection of discrete surfaces with any plane and to extract the intersection(s) as lines or
curves, insertion of the intersection points into the surfaces or splitting of the surfaces at their intersections with
the plane.

Intersect with Plane Button

222
Geometry Tab

Discrete Surface/Plane Intersection Panel

Intersect discrete surfaces with a plane


1. Click the Intersect with Plane button in the discrete surface toolbox. The panel appears and the Status
Line prompts you to select a set of surfaces.

2. Select the first set of surfaces and complete the set by a press of the middle mouse button. The various
buttons in the panel will activate.

3. Select the desired plane; if the selection is one of the primary planes then the tool will allow a
specification of the depth of the plane into the provided text field or a graphical selection of any point to
set the depth. Selection of the "Construction Plane" option will intersect with the current construction
plane.

4. Select the desired options and in the case where "Extract" has been selected then the intersections can be
generated either as line segments or curves where possible.

5. Press the Apply or middle mouse button to complete the operation.

223
CFD-GEOM V2014.0 User Manual

Boolean Operations
These tools allow you to union, subtract and intersect closed sets of discrete surfaces. The union operation will
combine two sets such that the common interior section will be removed. The subtract operation subtracts the
second set from the first. The intersect operation retains those surfaces which are common between the two sets.
The order of selection is not important for the union or intersect operation but it is critical for the subtract
operation.

Boolean Operations Button

Boolean Operations Panel

Perform boolean operations on discrete surfaces


1. Click the Boolean Operations button in the discrete surface toolbox. The panel appears and the Status
Line prompts you to select the first set of surfaces.

2. Select the first set of surfaces and complete the set by a press of the middle mouse button - the graphics
window will highlight where the collection is not closed. Then the Status Line will prompt you to select the
second set of surfaces.

3. Select the second set of surfaces and complete the set by a press of the middle mouse button. The various
buttons in the panel will activate.

4. Select the desired options then press the Apply or middle mouse button to complete the operation.

The boolean operations usually return a set of closed surfaces and the Outline/Critical Features tool can
then be used to split the surfaces.

Mesh Discrete Surfaces


The Discrete Surface Meshing tool enables you to create unstructured triangular meshes on surfaces defined only
by a collection of triangles or quadrilaterals. To create them, click the Discrete surface meshing tool in the
Geometry toolbox.

224
Geometry Tab

Mesh Discrete Surfaces Button

Discrete Surface Meshing Panel

Generate a surface mesh


1. Select a set of discrete surfaces to mesh

2. Set the following control parameters to govern how you want to generate the grid. Selected surfaces can
be prescribed their own max and min cell sizes. After selection of those surfaces for which you want a
different cell size, input the desired max and/or min cell sizes and then press the “Apply to Selected”
button.

Adapt to Curvature - Determines whether or not the curvature of boundary edge in the surface(s) is taken
into account when gridding the boundaries. When used with the Curvature Criterion angle, you can
control how coarse or fine to resolve high curvature regions.

225
CFD-GEOM V2014.0 User Manual

Maximum Curvature - An angle value that will create a higher quality grid. Disabling this option can be
useful for generating a coarse grid.

Maximum Cell Size - This determines how large triangles are allowed to grow. This does not mean
triangles this large will actually be generated.

Minimum Cell Size - Sometimes, the underlying boundary edges can contain cusps or other regions of
extremely high curvature of which you are not aware. This can result in unexpected clustering in the
vicinity of that feature. Raising the minimum cell size can reduce the clustering in that region, by
preventing the creation of triangles smaller than the specified value. This value is overridden if larger than
the minimum line or curve length in the geometry. By default, this value is 1/10000 of the default
maximum cell size, and should rarely be changed.

Thin wall processing - an additional meshing stage where those triangles having all nodes on the
boundary are either split or swapped with neighbors to enforce having at least one non-boundary node.

Edge Meshing Control - User can control which boundary edges of a surface will be remeshed - for those
edges which are remeshed, the original points distribution as given in the discrete surface definition will
be used. Options are All, Unshared (edges bounding only one surface), Shared (edges bounding two
surfaces) or None.

3. Click mesh to mesh the surface(s).

Discretely defined geometries do not have any topology associated with them, unlike normal trimmed surfaces
which have boundary curves/edges and interior loops. Therefore, CFD-GEOM transparently defines the underlying
topology system for the surfaces to be meshed; the system which derives the topology information can fail if the
surfaces contain cracks or if the surfaces do not close together to form complete boundaries among adjacent
surfaces. There are a number of caveats to using this tool:

1. If the discrete surface geometries match boundary edge to boundary edge then in order to obtain a point
to point match at boundaries the surfaces must all be meshed simultaneously. The figure below shows an
example. The figure on top shows the mesh when the surfaces are meshed independently while the
second figure shows the mesh with the surfaces meshed simultaneously. Notice that the top image does
not have a point to point match at their common boundary.

226
Geometry Tab

2. The selected surface(s) should not have any interior gaps; interior holes are allowed.

3. The selected surfaces should form a set such that the resulting set should not have any gaps.

4. Meshing may fail and the only recourse is to experiment with the minimum cell size and curvature
adaptation.

5. Each surface must not be closed and should have visible boundary segments.

Shrinkwrap Discrete Surfaces


An alternative to dealing with dirty CAD models is now to import discrete surfaces and shrink wrap the collection
to remove such artifacts as gaps, overlaps, and other common CAD import deficiencies. The shrink-wrapped mesh
can be a close approximation to the original geometry. After shrink-wrapping, the individual surfaces can be re-
meshed or used as emitted from the shrink-wrapping process.

Typically, this tool should be used on a collection of surfaces which are intended to form a closed set of watertight
surfaces, though open surfaces may also be shrink-wrapped. However, this will yield an overlapping surface mesh,
which can then be split using the critical feature splitting tool in the discrete modeling toolkit.

To create them, click the Shrinkwrap Discrete Surfaces tool in the Discrete Modeling toolbox.

Shrinkwrap Discrete Surfaces Button

227
CFD-GEOM V2014.0 User Manual

Discrete Shrink Wrapping Panel

Shrink wrap discrete surfaces


1. Select a set of discrete surfaces

2. Set the desired maximum size to specify the maximum allowable cell size for any new triangle. A smaller
maximum cell size will usually result in a more faithful representation of the original surfaces. Note,
however, that the shrink wrap mesh may spill into gaps between surfaces if the maximum cell size is
smaller than those gaps, and may result in a shrink-wrapping failure.

3. Upon a successful shrink-wrapping operation where the "Delete Original Surfaces" is set, the original
surfaces will be deleted and replaced by a similar number of surfaces, which will form a "watertight"
collection.

4. If the "Single Surface" option is set, then the shrink-wrapping operation will construct a single closed
surface.

Separate Discrete Surfaces


This tool allows you to separate, or split, discrete surfaces by directly selecting triangles. This tool is useful when a
sub-surface is needed but the splitting via planes or critical features will not suffice.

Separate Discrete Surfaces Button

Separate Discrete Surface Panel

Separate discrete surfaces with triangle selection


1. Blank out discrete surfaces in which you are not interested in order to speed the selection process.

228
Geometry Tab

2. Click the "Separate Discrete Surfaces" button in the discrete surface toolbox. The status line will prompt
you to select discrete surface facets (triangles).

3. Select any number of triangles; the usual selection/unselection mechanisms will work.

4. Click Apply, press the middle-mouse button, or press the F2 key to complete the operation.

The following images show an example of the process; in this case, we are extracting the interior circle as
a separate surface.

Separate Discrete Surfaces Example

Miscellaneous Tools

Miscellaneous Tools
The Calculate tools enable you to calculate distance, length and angles. To use the calculator, click the Calculate
tool in the Geometry toolbox. The options for calculating, from top to bottom, are:

Construction Plane
Calculate Distance
Calculate Length
Calculate Angle
Minimum Distance
Pick via Key Number
Pick via Name
Topology Queries
Projected Area

229
CFD-GEOM V2014.0 User Manual

Miscellaneous Tools Buttons

Construction Plane
The Construction Plane tool enables you to position a construction plane in space and place many points to
generate curve entities. The construction plane, when visible, is drawn as a uniform mesh to provide visual
feedback on its location and orientation.

Construction Plane Button

230
Geometry Tab

Construction Plane Panel

1. To generate curves using a construction plane:

2. Select the Construction Plane Option from the Miscellaneous tools.

3. Select a construction plane from the Choose Construction Plane section, based on the following
descriptions:

XY, YZ, and XZ - You can specify the coordinates or depth of a construction plane perpendicular to any of
the coordinate axes without having to specify three points which uniquely determine the plane.

Existing Line - This option will set the construction plane normal to the selected line.

Three Points - You can specify three points that uniquely determine the plane.

Point and Normal - You can select a point, then specify a normal to set the construction plane.

231
CFD-GEOM V2014.0 User Manual

Normal to Curve - The Normal to Curve option enables you to place the construction plane normal to any
location along a specified curve. Choosing this option opens a slider that adjusts the location of the
construction plane along the specified curve. This can be a useful tool if you want to generate curves
which are normal to a curve at a given location.

4. Set the Parameters based on the following descriptions:

Depth - Controls the depth of the construction plane perpendicular to any of the coordinate axes.

Step Size - Controls the gradations of the mesh and provides visual feedback on the physical values on the
plane.

5. Click Accept.

Calculate Distance
The Calculate Distance tool enables you to calculate the distance between two points.

Calculate Distance Button

Point Distance Panel

Calculate distance
1. Click the Calculate Distance button in the Calculate toolbox. The Point Distance panel appears and the
Status Line prompts you to select two points.

2. Select two points in the graphics area. The distance between these two points, as well as the difference in
X, Y, and Z, is reported in the text field on the input panel.

232
Geometry Tab

Calculate Length
The Calculate Length tool calculates the length of a line or curve.

Calculate Length Button

Curve Length Panel

Calculate length
1. Select a line or a curve in the graphics area.

2. Click the Calculate Length button in the Calculate toolbox. The Curve Length panel appears and the length
of the line or curve is calculated and displayed in the Length field.

Calculate Angle
The Calculate Angle tool calculates the degrees in an angle.

Calculate Angle Button

Calculate Angle Panel

Calculate the degrees of an angle


1. Click the Calculate Angle button in the Calculate toolbox. The Calculate Angle panel appears.

233
CFD-GEOM V2014.0 User Manual

2. Select two lines in the graphics area. If the lines intersect, the smallest angle between the two lines and
their intersection point appear in the Angle (Degree) field. If the lines do not intersect, an error message
appears in the Status Line.

Minimum Distance
The Minimum Distance tool calculates the minimum distance between all existing Points in a model.

Minimum Distance Button

Calculate Minimum Distance Panel

Calculate the minimum distance between points of a model


1. Click the Minimum Distance button in the Calculate toolbox. The Calculate Minimum Distance panel
appears.

2. Select all points in the graphics area (Ctrl-A). The two points that lie closest to each other are highlighted
in the error color and the distance between these points appears in the Distance field.

Pick via Key Number


This tool allows the user to pick an entity by inputting a key number.

Pick Via Key Number Button

Pick via Key Number Panel

234
Geometry Tab

Pick and entity via key number


1. Click the Pick Via Key # button in the Calculator toolbox.

2. Input the desired key number and press the Enter key; if a valid key number is input the entity will be
picked.

Pick via Name


This tool allows the user to pick an entity by inputting a its name.

Pick via Name Button

Pick via Name Panel

Pick an entity via its name


1. Click the Pick Via Name button in the Calculator toolbox; the Pick via Name panel will appear.

2. Input the desired name and press the Select button; if a valid name is input the entity will be picked.

Topology Queries
The Topology query tool is used to pick entities based on query value; for instance, you could as the tool to select
all lines/curves which are being used in the construction of one surface to help find areas of the model which
remain open.

Topology Queries Button

235
CFD-GEOM V2014.0 User Manual

Topology Queries Panel

Projected Area
The Projected Area tool allows the calculation of the frontal area of a specified set of surfaces onto a plane. The
frontal area is the total sum of all the sub-areas of the surface elements as projected onto an arbitrary plane. The
elements describing the surfaces can be triangles, quadrilaterals or polyhedral. The accuracy of the computation is
dependent on a single integer value which specifies the number of increments to refine a background mesh; for
example, the default value of 500 will generate a 500x500 background mesh. Larger integer values should yield a
more accurate calculation however, CFD-GEOM sets the allowable limits between 10 and 1500.

Projected Area Button

236
Geometry Tab

Projected Area Panel

Calculate the frontal area


1. Select the Projected Area Option from the Miscellaneous tools.

2. Select any number of trimmed or discrete surfaces.

3. Select the desired plane either constant X,Y, Z or an arbitrary plane by selecting the "Normal" option and
specifying the normal of the plane in the nx, ny and nz text fields.

4. Set the background size or leave as default.

5. Click the Apply button, press the middle-mouse button, or the press the F2 key.

6. The projected area in the current model units will be displayed in the Projected Area field.

237
Chapter 9. Mesh Tab

Mesh Tab
The tools in the Mesh Tab define grid parameters for structured or unstructured meshes. The toolbox is divided
into element types beginning with 1D elements (edge grids) and ending with 3D elements. During any task, the
Status Line displays information about the next expected input. These messages lead you step-by-step through the
current input procedure. If the phrase Picking Mode is visible in the Status Line, then no input is expected for the
selected option.

The Mesh tab has the following tools:

Structured Edge Options Creates and manipulates structured edge entities


Structured Face Options Creates and manipulates structured face entities
Unstructured Meshing Options Curve meshing, surface meshing, tet meshing, honeycomb meshing, and
mesh source tools
General Volume Grid Sweeping Options Create volume grids by extrusion, revolution, and nonlinear sweeps
Structured and Semi-Structured Domain Creates blocks, 2D blocks, composite blocks, and semi-structured
Options domains. Additionally, tools are provided to orient blocks, 2D blocks and
composite blocks
Cartesian Meshing Options Create Cartesian meshes
Filament Options Creates and edits filaments for use in the CFD-ACE solver
Mesh Query Options Checks for mesh quality such as centroid face angle and aspect ratio

239
CFD-GEOM V2014.0 User Manual

Mesh Tab

GRID QUALITY PROBLEMS

Grids sometimes contain grid quality problems such as spacing discontinuities due to poor volume ratios, grid
skewness, and not using the stretching function. For a more accurate and robust grid, it is suggested that after
creating the grid that you modify the grid slightly to improve the quality. The most important elements to look for
are:

• Smoothness - the stretching ratio between cells should be 1-2.


• Packing - cluster the grid where you know there are going to be solution gradients.
• Skewness - ensure that the structured grid lines are as close to 90 degrees as possible.

Mesh Definitions
To facilitate a clear understanding of the grid terminology, the following definitions are provided.

2D Block A 2D block is a set of faces that form a valid single-domain, structured grid. The 2D block is
analogous to the composite block in 3D. You can select 2D blocks with the Block (B) button in
the Entity Bar.
Block A block is a volume discretisation created, generally, from six face sets that form the Imin,
Imax, Jmin, Jmax, Kmin, Kmax boundaries. Currently, the block discretisation employs four TFI
options to determine the internal node distribution. When constructing a block, if a set of
bounding face sets is picked that encloses a volume and has less than six bounding sets, a
block with a degenerate side is automatically created. The orientation of the block is

240
Mesh Tab

automatically set, so the order of input for the face sets has no bearing on the resulting
orientation, except that the first picked set will usually become the Imin side of the block.
CFD-GEOM currently allows four variations of the TFI algorithm (directional TFI), including the
following: All Directions, I Direction, J Direction, and K Direction.
• The All Directions option takes the interpolate information from all six boundary
faces to determine the distribution for the internal nodes.
• The I Direction option uses the interpolate information from the J- and K-min and
max boundaries and interpolates the node distribution at each I station in the block
grid.
• The J and K Direction options work in a similar manner, taking the interpolant
information from the min and max boundaries of the remaining directions and
interpolating at each station in the chosen direction. These three direction options
allow you to exercise some control over the internal node distribution by ignoring
some of the interpolant information.
Composite Block A composite block is a set of blocks combined to form a single-grid block. The grid lines from
each member block’s TFI is preserved within the single composite block. The resultant single-
domain, structured grid is referred to as a composite block grid. In the Entity Bar, composite
blocks are selected with the Block (B) button.
Edge An edge is a set of lines and curves consisting of n grid points with n-1 line segments
connecting the grid points. Grid points along an edge are referred to as edge grid points and
are not the same as geometric points created using geometry creation tools. An edge is the
connecting element between faces as well as the bounding element of a face. An edge can
also be used in loops. An edge set consists of one or more connected edges.
Face A face is a surface discretisation created by TFI, generally, from four user-specified edge sets.
Existing face grids can also be projected to NURBS surfaces. The resultant grid is referred to
as the face grid (FG on the entity bar). A face set consists of one or more faces that can be
combined to form a valid structured surface grid. CFD-GEOM is capable of creating face
entities with degenerate boundaries. In selecting edge sets that are not degenerated, CFD-
GEOM accepts input for face construction until a closed loop is established or more than four
bounding sets are entered. If a degenerate topology exists, and the corresponding sides have
agreeable point numbers, a face with a degenerate boundary is created. Faces can have 0, 1,
or 2 degenerate sides.
Grid Toolbox The Grid toolbox is activated by clicking the Grid button. When you click a tool in the toolbox,
another panel opens for performing the following specific tasks:
• Creating and manipulating edges
• Generating unstructured triangular meshes
• Creating and manipulating faces
• Generating tetrahedral grids
• Generating semi-structured grids
• Creating and orienting blocks, 2D blocks, and composite blocks
• Checking grid quality
These messages lead you step-by-step through the current input procedure. If the phrase
Picking Mode is visible in the Status Line, then no input is expected for the selected option.

241
CFD-GEOM V2014.0 User Manual

Structured Edge Options

Structured Edge Options


The Structured Edge tools in the Grid toolbox enable you to create and modify edges. To use the tools, click the
Structured Edge tool in the Grid toolbox. The options for creating and modifying a structured edge are:

• Create/Edit Edge - Selects a set of lines and/or curves to form an edge.


• Create All Edges - Creates edges on all currently unblanked lines and curves that do not have an edge
defined over them.
• Edge Linking - Specifies relationships among edges in terms of grid point numbers, edge grid distributions,
or both. Edge linking provides a convenient way to automatically propagate the grid changes made using
the Edge Editor.
• Replace Edge's Curves - Replaces the geometry of an existing edge with a different geometry set using the
same end points as the original geometry.
• Split at Grid Point - Splits an edge at a specified grid point.
• Split at Point Entry - Splits an edge at a specific point entry.
• Join Edges - Joins edges.
• Copy End Spacing - Copies the edge spacing to other specified adjacent edges.
• Copy Grid Parameters - Copies an edge's grid parameters and applies them to other specified entities.
• Create Composite Edge - Create composite edges.
• Create Composite Edges - Create multiple composite edges simultaneously.

The following notes will assist you in using the Structured Edge tools:

• The geometry defined as part of an edge cannot be deleted without first deleting the edge.
• An edge cannot be deleted if it belongs to a face, a face cannot be deleted if it belongs to a block, and so
on.
• The edge creation tools do not allow you to create more than one edge on a line or curve. However,
certain operations (i.e. translation, rotation, etc.) implicitly filter lines and curves. This can cause some
lines or curves to have more than one edge defined on them. You can use the Edge Filtering option to
return to one edge for a given line or curve. See the Filtering menu for more detail on the use of filtering.

242
Mesh Tab

Structured Edge Buttons

Create/Edit Edge
The Create (Edit) Structured Edge tool creates an edge based on a set of one or more lines or curves that you have
selected. It also enables you to specify the edge grid parameters, number of grid points, and distribution type.

Create/Edit Edge Button

243
CFD-GEOM V2014.0 User Manual

Create/Edit Edge Panel

Create a new structured edge


1. Click the Create/Edit Edge button in the Structured Edge toolbox. The Parameters panel appears. It
displays the number of grid points that are placed on the edge and how the grid points are distributed: by
power law, hyperbolic tangent, or geometric. The default number of points is 5.

2. Select one of the following distribution types from the Type section of the panel:

Power Law The power law distribution used in the Structured Edge Parameters panel is defined by

where
th
u[n] = n gridpoint on the interval

244
Mesh Tab

[0...1], n = grid points index on the interval

[1...npts], npts = the number of grid points

x = user -specified power

The power is usually close to one which corresponds to a uniform distribution. For non-unity
powers, the forward, backward, and symmetry options indicate how the power law grid
distribution is applied. For the hyperbolic tangent distribution, specify the spacing
parameters at the beginning (Delta1) and end (Delta2) of the edge. Endpoint spacings can be
specified in one of two ways: absolute spacings (the default) and relative spacings. Relative
spacings are expressed as some fraction of the total edge length. For example, given an edge
of length 100, a relative dsl of 0.1 results in a first endpoint of 10.
Hyperbolic Hyperbolic Tangent edge gridding is based on the iterative technique to minimize truncation
Tangent errors in one-sided and two-sided stretching functions as described by Vinokur (1982).
Geometric A geometric distribution behaves similarly to a power law distribution except that the
spacing is governed by a geometric sequence, which in turn is controlled by a transition
factor that you have specified (i.e. the length of a grid segment will be that of the previous
grid segment multiplied by the transition factor).

3. Select the lines and curves in the graphics area that will be used to create the new edge. Each selection is
highlighted in red and the edge grid is immediately previewed.

4. Modify the number of grid points or edge grid point distribution in the Parameters panel.

5. Click Apply or the middle mouse button to create the edge.

6. Press the Q key on the keyboard to quit edge creation mode.

EDGE EDITING

Modifying or editing the structured grid entities is performed by changing the edge point distribution. It is easiest
to work i this mode by turning the display of all entities off except for edges and edge grids. During edge editing, if
you select a linked edge and modify the number of edge grid points or the distribution all other group members
will also be edited. Selecting Update then updates all faces, blocks, etc. There are two ways to edit an edge: using
the Edge Query menu in the graphics window and using the Create/Edit Structured Edge button.

Edit an edge using the Edge Query menu


1. Select an edge in the graphics window.

2. Click the right mouse button. The Edge Query menu appears.

3. Select the Properties option. The Parameters panel appears.

4. Modify the number of edge grid points or edge grid point distribution in the Parameters panel.

245
CFD-GEOM V2014.0 User Manual

5. Click Update to update all entities affected by any edge modifications. Click Apply or the middle mouse
button to apply the new grid parameters. Click Cancel to restore the model to settings that were made
after the last successful update.

Edit and edge using the Created/Edit Structured Edge button


1. Select the Create/Edit Structured Edge button from the Grid panel. The Parameters panel appears.

2. Select an edge. The edge becomes highlighted in red. All highlighted edges retain the user-specified
numbers of edge grid points and edge point distributions.

3. Modify the number of edge grid points or edge grid point distribution in the Parameters panel.

4. Click Update to update all entities affected by any edge modifications. Click Apply or the middle mouse
button to apply the new grid parameters. Click Cancel to restore the model to settings that were made
after the last successful update.

UPDATING

During an Update, CFD-GEOM attempts to update all other entities affected by the modifications made during
edge editing according to the rules for mismatched faces. (Mismatched faces are those where the number of edge
grid points on opposing edge sets are no longer equal). For mismatched faces with n edges constituting the
opposite sides of the face, the following rules apply:

• If n-1 of the edges have been specified, the nth edge is determined.
• If n-1 edges have not been specified, you are prompted to manually balance the mismatched numbers of
grid points. The mismatched face is highlighted with the error color (green), as are the opposing edges
which have inconsistent numbers of edge grid points. Edit one or more of the highlighted edges to
balance the number of edge grid points on the opposing edge sets.

EFFICIENCY TIPS
• When modifying an edge, check to see if the number of points on opposite edges match. If not, modify
one (or more) of the opposite edges to balance the number of points before selecting Update.
• Use Edge Linking to automatically maintain the same number of edge grid points or edge grid point
distribution on a group of related edges.
• If you get lost during an Update, click Cancel to return all edge point numbers to their previous values for
the last successful update. File saves cannot be performed until all faces are balanced.
• Linked Edges - Selecting any linked edge during edge editing and subsequent modification of the number
of edge grid points or edge grid point distribution results in the automatic modification of all other group
members. Selecting Update then updates all faces, blocks, etc.
• Before the grid system can be handed to the flow solver, you must define boundary and volume
conditions in the View Bar-BC/VC Editor.

Create All Edges


The Create All Edges tool creates an edge on every unblanked line or curve (except those already having an edge).
The current edge parameter characteristics as specified under the edge parameter panel are used to create this
edge.

246
Mesh Tab

Create All Edges Button

Create All Edges Panel

Create all edges


1. Select a geometry in the graphics area for which you want to create all edges.

2. Click the Create All Edges button in the Structured Edge toolbox. The Edge->Create All panel appears. The
default number of points is five.

3. Enter the number of grid points in the Number of Points field.

4. Select one of the distribution methods from the Distribution section of the panel (see Create a new
structured edge for a description).

5. Click Preview to preview the edges. Click Apply or the middle mouse button to create the edges. All lines
in the Graphics area turn blue to indicate that edges have been created. In addition, edge grids appear on
each line. Each edge displays the number of points you specified in the Number of Points field.

247
CFD-GEOM V2014.0 User Manual

6. Press the Q key on the keyboard to quit edge creation mode.

Edge Linking

EDGE LINKING

The Edge Linking tool links edges together to set the same edge grid point number and/or edge grid point
distribution for a set of edges, such that if one edge in the group is changed, they are all changed. By using this
option you can specify the complete grid propagation pattern throughout the model to automatically refine or
coarsen a grid. For edges that have faces built from them, it is recommended that you only use the link option on
them when all edges in the group have the same number of grid points.

Edge Linking Button

Edge Linking Panel

EDGE LINKING GROUPS

Edge linking groups consist of two or more edges. The first edge added to the group is the leader edge. Subsequent
edges added to the group are called secondary edges. There are three link types: number of points, distribution,
and both. These link types have no meaning for the leader edge. When a secondary edge is linked according to the
number of points, it will always have the same number of grid points as the leader edge, but its distribution type is
independent of that of the leader edge. When linked according to distribution, the secondary edge will always
have the same distribution as the leader edge, but the number of points on the secondary edge is independent of
that of the leader edge. When a secondary edge has a "both" link type, it will always have the same number of grid
points and distribution as the leader. Within an edge linking group, secondary edges can have different link types.
An edge can belong to, at most, one edge linking group.

248
Mesh Tab

Create an edge linking group


1. Click the Edge Linking button in the Edge toolbox. The Edge->Link Edges panel appears. If there are any
existing edge linking groups, their leader edges will be highlighted with the Picked Set 1 color.

2. Turn off the FG button on the Entity Bar to turn off face grid viewing.

3. Select a leader edge with the left mouse button. It will be highlighted with the picked color. When
creating a new link group, you should not select a leader edge or secondary edge from an existing group.

4. Select additional edges and click the middle mouse button to complete the set.

5. Select one of the following Link Options in the Edge > Link Edges panel: Both, Number of Points,
Distribution.

6. Select the link type and press the middle mouse button to complete the group. Please note that all edges
in the group will get the currently selected link type.

7. Click Apply to apply the edge linking.

ADDING EDGES TO EDGE LINKING GROUPS

Add edges to an edge linking group


1. Select the Edge Linking button from the Structured Edge toolbox. Leader edges of existing groups will be
highlighted with the Picked Set 1 color.

2. Select an edge in the group to which you want to add edges. If you select a leader edge, it will be
highlighted in the Picked color. All secondary edges in that group will be highlighted in the Picked Set 3
color. If you, instead, select a secondary edge, that edge and the leader edge in the group will be
highlighted in the Picked color. The remaining secondary edges in the group will be highlighted in the
Picked Set 3 color. Normally, you should select the leader edge.

3. Select any additional edges. These edges should not belong to existing groups.

4. Select the link type and press the middle mouse button to complete the group. All edges in the group will
get the currently selected link type.

DELETE EDGES FROM EDGE LINKING GROUPS

Remove an edge from an existing edge linking group


1. Select the Edge Linking button from the Structured Edge toolbox.

2. Select the edge you want to delete. If the edge is part of an edge linking group, both it and the leader
edge will be highlighted in the picked color.

3. Click the Remove button in the edge linking toolbox. The edge is deleted.

249
CFD-GEOM V2014.0 User Manual

Multiple edges can be deleted simultaneously but they must belong to the same edge linking group. If you remove
all secondary edges from an edge linking group, that group will be destroyed. Leader edges can not be removed
from a link group.

Delete an edge linking group


1. Press CTRL+A to select all.

2. Click the Remove button. The edge linking group is deleted. Those selected edges that do not belong to
the currently selected group will be ignored.

EDIT LINK TYPES IN AN EDGE LINKING GROUP

To edit the link types within an edge linking group:

1. Select the Edge Linking button from the Structured Edge toolbox.

2. Select the edge whose link type you want to modify. That edge and the leader edge will both be
highlighted in the picked color. The link type of the edge will also be shown.

3. Choose the link type and press the middle mouse button or Apply. Multiple edges can be modified
simultaneously.

The link type will be applied to all selected edges when the change is applied. To assign different link types to the
edges, the edges should be edited and changes applied individually. Whether creating or modifying an edge linking
group, selecting "Update” will propagate the changes to all entities affected by the creation or modification of the
edge linking group.

Tips

• After editing, the edge linking group remains selected in the edge linking editor. If you want to create a
new group or edit a different group, you will need to click the Update button and then Cancel, or reopen
the edge link editor.

• When you assign a Both or Distribution link type to a secondary edge, and the distribution type is
hyperbolic tangent, the secondary and leader edges should be of similar length. Otherwise, you may
encounter a situation in which the sum of the specified endpoint spacings is larger than the length of the
secondary edge. In such situations, CFD-GEOM assigns a uniform power law distribution to the secondary
edge.

Replace Edge's Curves


The Replace Edge's Curves tool moves the underlying geometry of an edge, i.e., its constituent lines and curves,
from one line and curve set to another without first removing all associated faces and blocks. The only restriction is
that the new geometry set has the same endpoints as the original geometry set.

250
Mesh Tab

Replace Edge's Curves Button

Replace Edge's Geometry Panel

Replace an underlying line or curve


1. Click the Replace Edge's Curves button in the Structured Edge toolbox. The Replace Edge's Geometry
panel appears and the Status Line prompts you to select the edge for geometry substitution.

2. Select the edge you want to replace. The Status Line prompts you to select the entities for substitution.

3. Select the new geometry set to substitute.

4. Click the middle mouse button to substitute the new geometry.

5. Click Update to update the rest of the model. The Update button appears after the first successful
substitution has been completed.

Split at Grid Point


The Split at Grid Point tool splits an edge at one of its grid points. This is different from the Edge Split/Join option
which splits at an endpoint of a line or curve. Edges belonging to edge linking groups cannot be split.

Split at Grid Point Button

251
CFD-GEOM V2014.0 User Manual

Split at Grid Point Panel

Split an edge at a grid point


1. Click the Edge Split at Grid Point button in the Structured Edge toolbox. The Split->Edge at Point panel
appears and the Status Line prompts you to select the edges that you want to split.

2. Select the edge you want to split.

3. Select one of the two options for splitting from the Split Edge at Pint panel:

Split - Split creates a new geometric point at the specified grid point. It then splits the appropriate
constituent line/curve as necessary, splits the edge, and updates any topology/grid entities derived from
the original edge.

Put Point - The Put Point option places a new geometric point at the specified grid point.

Split at Point Entity


An edge can only be split at an endpoint of one of its constituent curves or lines. If you need to split an edge at
some other point, you should first select the underlying line or curve and split that entity at the desired location.
Then you can go back and split the edge at that point.

Split at Point Entry Button

Split Edge at Point Entity Panel

252
Mesh Tab

Split an edge
1. Click the Split at Point Entity button in the Structured Edge tool box. The Split Edge at Point Entity panel
appears and the Status Line prompts you to select the edges that you want to split.

2. Select the edge you want to split.

3. Click the Split button in the panel. CFD-GEOM splits the edge into two equal parts.

Join Edges
The join edges tool can be used to join two or more edges into a single edge.

Join Edges Button

Join Edges Panel

Join edges
1. Click the Join Edges button in the Structured Edge toolbox. The Join Edges panel appears and the Status
Line prompts you to select the edges that you want to join.

2. Select the edges you want to join.

3. Click the Join button in the panel. CFD-GEOM creates a new edge from your selections. The resulting
number of grid points for the new edge will be the sum of the input set grid points minus the number of
connections. After a Join Edge operation is completed, CFD-GEOM automatically updates the model with
the new entity and its associations. This option does not allow you to join edges that are not part of the
same set of face entities or loop entities.

Copy End Spacing


The Copy End Spacing tool ensures that edges at a reference point have identical end point spacing. If the source
edge or target edge is closed, you cannot use this tool. If a closed source or target edge is picked, CFD-GEOM will
automatically unpic the edge and a warning message will appear. In some cases, all target edges may share both
end points with the source edge. In such cases, CFD-GEOM will prompt you to specify the reference point and then
click the middle mouse button.

253
CFD-GEOM V2014.0 User Manual

Copy End Spacing Button

Copy Edge Endpoint Spacing Panel

Copy end spacing to adjacent edges


1. Ensure that one of the edges has the desired spacing at the point.

2. Click the Copy End Spacing button in the Structured Edge toolbox. The Copy Edge Endpoint Spacing panel
appears.

3. Select the source edge with the desired spacing at the reference point.

4. Select one or more target edges. Note that all selected targets must share the reference point, and that
the reference point is implied by the selected source and target edges.

5. Click the middle mouse button to complete the operation. CFD-GEOM does four things:

i. If the grid type of any target edge is geometric or power-law, that edge's grid type is converted
to a hyperbolic tangent type that uses absolute end point spacings. The delta values are
extracted from the current grid (before modification).

ii. The source end spacing at the reference point is applied to each target edge on the side incident
at the reference point. Note that on the opposite side of the Edge, the spacing is not altered.

iii. The target edges are re-gridded with the new end point spacing specifications.

iv. All affected structured and prismatic grids are updated.

Copy Grid Parameters


The Copy Grid Parameters tool enables you to copy all or par of and edge's grid generation parameters to other
edges and to recreate new edges with these parameters.

Copy Grid Parameters Button

254
Mesh Tab

Edge Linking Panel

Copy edge grid parameters to another entity


1. Select the edge with the grid parameters you want to copy.

2. Click the Copy Grid Parameters button in the Structured Edge toolbox. The Edge Linking panel appears
and the Status Line prompts you to select a reference edge.

3. Select a reference edge in the graphics area.

4. Select one of the following copy options from the Copy Options section:

Both - The target edges (including edges created in this tool) will have the same number of grid points -
AND- the same type (power-law, hyperbolic tangent, etc.) as the reference edge. They will also have the
same power, end point spacings, etc., as the reference edge.

Number of Points - The target edges (including edges created in this tool) will have the same number of
grid points as the reference edge.

Distribution - The target edges (including edges created in this tool) will have the same type (power-law,
hyperbolic tangent, etc.) as the reference edge. They will also have the same power, end point spacings,
etc., as the reference edge.

5. Select any number of target lines, curves, or edges.

6. Click Apply to apply the specified coarsening factors to all selected blocks. The grid parameters are copied
to the targeted entities.

For each targeted line/curve:

• A new edge is created. Regardless of the number of points setting, the new edge will have the same
number of grid points as the source edge.
• If Distribution is selected, the new edge uses the same distribution parameters (described above) as the
source edge. If not selected, the new edge will receive a uniform power-law distribution. Note also that if
the source edge has a hyperbolic tangent distribution, and if the sum of its delta-s values exceeds the
length of the new edge, the new edge will receive a uniform power-law distribution.

255
CFD-GEOM V2014.0 User Manual

• If the selected line/curve already has an associated edge, CFD-GEOM will automatically unpick the entity
and issue a warning message.

For each targeted edge:

• If Number of Points is selected, the target edge will receive the same number of grid points as the source
edge. Note that if the target edge is currently used in the construction of any faces, this tool cannot be
used to change the number of grid points on the target edge. This restriction is necessary to ensure that
Faces do not become unbalanced. Please use the Edge Editor to change the number of grid points on such
edges.
• If Distribution is selected, the target edge will use the same distribution parameters (described above) as
the source edge. If the target edge is a member of an Edge Linking Group, the members of the linked
group will also be updated when appropriate.

Create Composite Edge


Composite Edges are a new entity type introduced in CFD-GEOM v2004. They are a collection of Edges that are
treated as a single entity during Face creation, Loop construction, Filament creation, and boundary condition
assignment (in 2-D grids). Composite Edges preserve the grid distributions of the underlying edges.

During Face, Block, and Semi-Structured domain "sweeps”, a single Face is swept from each Composite Edge.
Composite Edges can be built on Edges that are already used in the construction of Faces, Loops, and Filaments. In
such cases, the definitions of these entities are automatically updated; because the underlying Edge grids are
preserved, the higher level grids will remain unchanged.

Create Composite Edge Button

Create Composite Edge Panel

Create a new composite edge


1. Select the Create Composite Edge tool from the Structured Edge toolbox.

2. Select two or more edges that satisfy the rules cited below.

3. Press middle mouse to create the composite edge.

256
Mesh Tab

Rules
1. Selected edges must form a connected set with no branches.

2. Selected edges must not form a closed set.

3. Selected edges must not lie on different sides of the same face.

4. All selected edges must be used in the construction of exactly the same set of entities.

Note If any of these rules are violated during composite edge construction, an error message explaining the
problem will be displayed.

Create Composite Edges


This tool is similar to the Create Composite Edge tool except that:
• It can create multiple composite edges simultaneously
• It automatically subdivides the selected edge set into collections from which composite edges can be
built. In other words, it finds collections of edges that satisfy the rules cited in (link to Create Composite
Edge)
• No errors are possible

The goal of the composite edge tool is to use as many of the selected edges as possible to create as few composite
edges as possible.

Create Composite Edges Button

Create Composite Edges

Create a composite edges


1. Select the Create Composite Edges tool in the Structured Edge toolbox.

2. Select at least two edges that satisfy the rules cited in Create Composite Edge.

3. Press middle mouse to create the composite edges.

257
CFD-GEOM V2014.0 User Manual

EFFICIENCY TIP
When building complex 3-D meshes via linear extrusion, revolution, and non-linear sweeping, we recommend the
following approach to reduce the number of generated faces:

1. Build a 2-D profile from edges with the desired distributions

2. Continue building the 2-D profile by building faces and/or loops on these edges

3. Enter the Create Composite Edges tool, select all edges, and press middle mouse

4. Extrude, revolve, or sweep the 2-D profile to generate a 3-D mesh

Structured Face Options

Structured Face Options


The Structured Face options enable you to create and modify structured and swept faces, and split and join faces.
To work with the tools, click the Structured Face tool in the Grid toolbox. The options for creating and modifying
faces are:

Face from Edges


Face via Extrusion
Face via Revolution
Swept Face
Smooth Face
Project Face
Create All Faces
Split Face
Join Faces
Butterfly Faces

258
Mesh Tab

Structured Face Buttons

Face from Edges


The Create Structured Face from Edge Sets tool enables you to create a structured face using edge sets.

Face From Edges Button

Face from Edge Sets Panel

259
CFD-GEOM V2014.0 User Manual

Edge Set Diagram

Because CFD-GEOM generates boundary-conforming tetrahedral meshes, the meshes can be no better than the
boundary mesh. That is, tetrahedra (or pyramids) grown from high-aspect ratio triangles and quads will have small
minimum angles. Please keep this in mind when you build your unstructured domain from structured faces.

EDGE SETS

Create a structured face using edge sets


1. Click the Face From Edges button in the Structured Face toolbox. The Face From Edge Sets panel appears
and the Status Line prompts you to pick the first of four edge sets.

2. Click the Edge Sets option in the Creation Via section.

3. In the graphics area, select the edges for the first edge set that will appear as Set 1 in the Point Count
section. Selected edges appear in red. If you make a mistake, click the right mouse button and select
unpick to de-select the last selected edge.

An edge set can consist of a single edge or multiple edges that are connected in an end-to-end fashion.

4. Click the middle mouse button to complete the first edge set.

Even if the edge set consists of a single edge, you must click the middle mouse button to indicate the
completion of the edge set. The set appears in Set 1 of the Point Count section.

5. Select the next three sets. The order in which you pick edge sets is not important. When an edge set is
complete, it changes color. The first edge set changes to magenta, the second set to yellow; the third set
to cyan; and the fourth set to dark magenta.

6. After completing the fourth edge set, a message appears on the Status Line indicating that the face was
successfully created. The white face handler appears in the middle of the face. You can create additional
faces or quit. Once this tool is selected, it remains engaged until you press the "q" key on the keyboard.

Tip When creating three-sided degenerate faces, the order in which edge sets are picked is important.
CFD-GEOM will place the degeneracy at the intersection of the first and third edge sets. For two-sided
faces, the picking order is not important. A degeneracy will be placed at each of the two intersections of
the edge sets.

260
Mesh Tab

Face via Extrusion


The Create Structured Face from Linear Extrusion tool enables you to create a structured face via extrusion.

Face Via Extrusion Button

Face Extrusion Panel

Because CFD-GEOM generates boundary-conforming tetrahedral meshes, the meshes can be no better than the
boundary mesh. That is, tetrahedra (or pyramids) grown from high-aspect ratio triangles and quads will have small
minimum angles. Please keep this in mind when you build your unstructured domain from structured faces.

261
CFD-GEOM V2014.0 User Manual

EXTRUSION

Extrusion enables you to select a set of edges that are extruded along a second set of edges or in one of the
coordinate directions to generate face entities. If the original set of edges selected contains more than one edge, a
face is extruded from each one. If you extrude along an existing edge, the selected edge must share an endpoint
with the set being extruded.

Create a structured face using extrusion


1. Select the Face Via Extrusion button from the Structured Face toolbox. The Face Extrusion panel appears
and the Status Line prompts you to pick an edge to extrude along.

2. Select the edge you want to extrude and click the middle mouse button to complete the selection. The
Status Line prompts you to choose the Extrusion method.

3. Select the Extrusion option in the Creation Via section.

4. Select an X, Y, Z, or existing edge in the Extrude Options section.

5. Click Preview to view the extrusion. Click Apply or middle mouse button to create the lines, edges, and
face.

Face via Revolution


The Create Structured Face via Revolution tool enables you to create a structured face via revolution.

Face Via Revolution Button

262
Mesh Tab

Face Revolution Panel

Because CFD-GEOM generates boundary-conforming tetrahedral meshes, the meshes can be no better than the
boundary mesh. That is, tetrahedra (or pyramids) grown from high-aspect ratio triangles and quads will have small
minimum angles. Please keep this in mind when you build your unstructured domain from structured faces.

REVOLUTION

Revolution enables you to select a set of edges that are to be revolved around a selected axis. The axis may be any
one of the coordinate directions or an arbitrary axis defined by a selected line. If multiple edges are selected for
the original set, a face is revolved from each edge.

263
CFD-GEOM V2014.0 User Manual

Create a structured face using revolution


1. Select the Face Via Revolution button from the Structured Face toolbox. The Face Revolution panel
appears.

2. >Select the Revolution option in the Creation Via section.

3. Select the set of edges that are to be revolved around a selected axis.

4. Click the Preview button to view the extrusion. Click Apply to create the face.

Swept Face
The Create Structured Swept Face tool enables you to create complex faces by sweeping selected edge along a
prescribed path (the sweeping curve). This face is formed by forming an underlying swept surface to which the
face is then automatically projected.

Swept Face Button

264
Mesh Tab

Face Sweep Panel

You may first select a set of edges to be swept after which an arbitrary number of connected curves defining the
sweep path may be selected. The remainder of the operation is the same as for the Swept Surface operation with
the addition of an input field where the number of points may be specified to indicate the resolution of the
resulting face along the sweeping path.

The swept face tool generates the underlying surface and then automatically projects the face onto the surface
using the closest point algorithm. For highly convoluted swept faces this method may fail and this failure is
exhibited by the significant deviation of the face mesh from the underlying surface. In these circumstances, the
check box labeled as Closest may be unchecked to obtain the alternate normal projection method. This method is
far slower but the results are usually satisfactory.

A scaling factor can be applied along the sweep path such that the shape of the opposing end edge will be smaller
or larger by the specified factor. Be aware that the scaling is performed about the points located on the sweep
path and the result may not be what was intended.

Typically, swept faces are created as a combination of rotations and translations. To create a swept face using only
translations; the check button labeled Fixed Orientation must be unchecked.

265
CFD-GEOM V2014.0 User Manual

Smooth Face
The Smooth Structured Faces tool can be used to improve the grid point distributions on a face. This facility
invokes an iterative numerical procedure which adjusts the face grid distribution by the solution of an elliptic set of
nonlinear partial differential equations. The differential equations are of the Poisson type and may have zero or
non-zero forcing functions. The presence or absence of forcing functions control the eventual grid distributions.
Complete absence of forcing functions will solve the LaPlace equation and will yield the smoothest possible grid
distribution. However, any desirable clustering of grid points near the edges of the surface will be lost. This tool
may be used, without losing grid integrity, with faces which have been associated with underlying NURBS surface
sets using the Project tool, as discussed above.

There may be one of two types of boundary conditions, Fixed or Orthogonal, prescribed for each edge of a face.
The Fixed boundary condition indicates that the forcing function will be zero at that edge and the grid will, thus, be
of the LaPlace behaviour near that edge. An Orthogonal boundary condition will try to generate forcing functions
such that t the grid distribution is orthogonal to the edge and honor any near wall grid distribution. For 2007, a
new boundary condition type (Orthogonal + Spacing) has been provided - this option allows you to set a desired
near-edge spacing manually. By default, each edge of a face will have a Fixed boundary condition.

Smooth Face Button

Smooth Face Panel

Using this tool enables you to select any desired face located within the model for smoothing. When you select
smoothing, the list box displays the number of edges and their current boundary conditions. Selecting edges from
the list box will cause the edges to highlight. Press the Fixed or Orthogonal buttons to modify the boundary
condition. You may enter the number of iterations and press the Apply button to perform the elliptic smoothing.

266
Mesh Tab

The selected face will remain active until another face is selected or the cancel button is pressed. Thus, you may
make boundary condition and number of iteration modifications without having to repeatedly select the face.

In V2007.2, several improvements were made to the face smoothing. A problem was noted in earlier versions in
the grading of such meshes near the boundaries, i.e., the meshes tended to expand far too rapidly away from the
boundaries and thus caused large aspect ratios.

The figure below shows the grid on a circular face. The top-left image is what is obtained from just an algebraic
method, while the top-right image shows the mesh after smoothing with orthogonality. Note that in the top-right
image the mesh is now normal to the boundaries but the spacing away from the wall is derived from the algebraic
mesh. The bottom-left image shows the mesh with orthogonality, but with a user specified spacing - note that only
the first point is near the desired spacing but the next grid lines tend to quickly deviate from the specified spacing.
The figure in the bottom-right shows the new method. The orthogonality is preserved but the near wall spacing is
preserved further into the mesh.

For a more clear depiction of the old and new behaviors, the images below show the original near boundary and
the new near boundary behavior.

267
CFD-GEOM V2014.0 User Manual

Smoothing in V2007

Smoothing in V2007.2 with stretching improvements

Smooth a face
1. Select a face to smooth.

2. Select the edges to change the BC Type.

Enter the number of smoothing iterations.

Note You should enter the total number of smoothing iterations. You cannot smooth a face 50 total
iterations by entering 25 iterations and applying the changes twice. You should instead enter 50 total
iterations, i.e. the iterations on the face are not cumulative.

3. Click Apply to smooth the face.

4. You may remove any smoothing by selecting the edges and clicking the Reset button. this will remove any
smoothing from the face.

Project Face
The Project Structured Faces to Surfaces tool enables you to project the grid points on faces to a prescribed set of
NURBS surfaces. The algorithm projects the algebraically generated grid points onto the NURBS surface set using
either a normal or closest point method and thus ensures that the resulting face grid points will adhere to the
underlying NURBS surface set. CFD-GEOM remembers whether or not a face has been projected. If a projected

268
Mesh Tab

face is modified during a geometry/grid update or is read from a GGD file, the face is re-TFI’d (transfinite
interpolated) and then re-projected. Any smoothing that you have specified is then applied.

Project Face Button

Project/Unproject Face Panel

Project faces
1. Click the Project Face button in the Structured Face toolbox.

2. Select set of faces that will be associated to a set of surfaces.

3. Click the middle mouse button to complete the face set.

4. Select a set of surfaces.

5. Click the middle mouse button to complete the surface set and to associate each face in the selected face
set to each surface in the selected surface set. If a face is projected to a trimmed surface, it is projected
only to the active portion of the surface defined by the trimming loops.

Create All Faces


The Create All Faces tool generates all possible faces from combinations of edges. CFD-GEOM is capable of
automatically generating 4-sided faces with one edge per side, and 2-sided faces with one edge per side (and two
automatically generated polar degeneracies). These two options can be enabled/disabled. CFD-GEOM does not
automatically generate 3-sided faces because additional information is required to generate such faces (i.e. where
the degeneracy is to be placed). Faces are generated from a pool of edges. This pool of edges can be specified
implicitly or explicitly. In the implicit method, the pool of edges is defined by the set of all unblanked edges. In the
explicit method, you pick the edges that will go into the pool. In either case, faces will be generated only from
edges in the pool.

269
CFD-GEOM V2014.0 User Manual

Create All Faces Button

Create All Faces Panel

Create all faces


1. Click the Create All Faces button in the Structured Face toolbox. The Create All Faces panel appears and
the Status Line prompts you to click the middle mouse button to create all possible faces on unblanked or
selected edges.

2. Select the Four Sided or Two Sided option. Wne generating 4-sided faces, CFD-GEOM finds all closed sets
of four edges. If the number of grid points on each edge will yield a balanced face, the face is created.
Two-sided faces are generated similarly.

3. Click the Apply button.

Split Face
The Split Structured Faces tool enables you to split a face into two or four faces along its grid lines. When splitting
a face, new edges must be generated in the interior of the face. The new edges are created exactly on the current
face grid. For this reason, it is recommended that projection or smoothing be done first.

Split Face Button

270
Mesh Tab

Split Face Panel

Split a face
1. Click the Split Face button in the Structured Face toolbox. The Split Face panel appears and the Status Line
prompts you to select a face to split.

2. Select a face in the graphics area. Curves will be drawn along the grid lines at the currently selected I and J
values.

3. Use the sliders for the I and J Values to position the curves.

4. Click Split or middle mouse button to perform the split. The bounding edges (and their underlying
geometry) are automatically split as appropriate, and new edges are generated in the interior of the face.
The original face is deleted and replaced by the new faces. Any topology and grids affected by the splitting
of the face and underlying entities is automatically updated.

Join Faces
The Join Structured Faces tool enables you to join multiple faces into a single face. Please note the following
restrictions:

• If any of the faces to be joined are used in the construction of structured domains, shells, or semi-
structured domains, all the faces must be used in the construction of those same entities. In other words,
all the faces must belong to exactly the same set of higher level entities.
• Faces used in the construction of blocks must all lie on the same side of each block derived from them.
• The collection of faces must form a valid topology.

Please note the following additional behaviors:

• Edges in the interior of the collection of selected faces are not discarded.
• The resulting face grid will not necessarily be equivalent to the sum of the original face grids. The original
faces are discarded and replaced with the new face. The grid on the new face will be a TFI (transfinite
Interpolation) of the boundaries of the original face collection. Any smoothing and.or projection in the
original faces may be lost.

271
CFD-GEOM V2014.0 User Manual

Join Faces Button

Join Faces Panel

Join multiple faces


1. Click the Join Faces button from the Structured Faces toolbox. The Join Faces panel appears and the
Status Line prompts you to select the faces you want to join.

2. Select all faces to be joined.

3. Click the middle mouse button or Apply to complete the set and join the structured faces.

Butterfly Faces
A convenience tool has been added to automatically create a "butterfly" set of faces for circular topologies. That is
5 structured faces (4 and 1 core) inside a circle. Parameters are available to set the size of the core and mesh
density.

Butterfly Faces Button

272
Mesh Tab

Butterfly Faces Panel

Create a butterfly face


1. Select four edge sets.

2. Specify the core face major and minor radius.

3. Click Apply.

Unstructured Meshing Options

Unstructured Meshing Options Overview


The Unstructured Meshing options allow you to generate unstructured meshing in CFD-GEOM. The following tools
are available:

Curve Meshing
Surface Meshing
Boundary Layer Meshing
Tet Meshing
Define Mesh Sources
Corner Point Source
Interior Source
Tet Source

273
CFD-GEOM V2014.0 User Manual

Destroy Selected Meshes


Honeycomb Meshing

Unstructured Meshing Tools

Curve Meshing
Curve meshing is now allowed, which greatly improves the ability to control mesh size. Surface meshes are
generated from the curves bounding the surface, which means that curve meshing will give a very good indication
of the final density of the surface mesh. This means that the surface mesh density can be "previewed" by meshing
the curves, and therefore circumventing the need to mesh the surface to see the density/quality (surface meshing
is much more computationally expensive than curve meshing).

Curve Meshing Button

274
Mesh Tab

Curve Meshing Panel

Mesh curves

1. Select the Curve Meshing tool

2. Select a set of curves to mesh

3. Set the following control parameters to govern how you want to generate the grid.

Adapt to Curvature - Determines whether or not the curvature of curves and surfaces in the domain is
taken into account when gridding the boundaries and interiors of the surfaces. When used with the
Curvature Criterion angle, you can control how coarse or fine to resolve high curvature regions.

Maximum Curvature - An angle value that will create a higher quality grid. Disabling this option can be
useful for generating a coarse grid.

Transition Factor - In the first phase of triangular surface grid generation, the lines and curves that bound
the surfaces are gridded. The transition factor governs how quickly the segment lengths grow along these
entities. For example, given a transition factor of 1.1, CFD-GEOM will attempt to make a segment 1.1
times longer than the previous segment. CFD-GEOM will attempt to guarantee that, given any two
adjacent grid segments, the ratio of the length of the larger segment to that of the smaller segment will
never exceed the transition factor. When trim loops contain structured edges, this might not be possible

275
CFD-GEOM V2014.0 User Manual

in some cases. The transition factor must be greater than or equal to one. However, values smaller than
1.01 may cause the grid segment smoother to fail to converge. This will cause the line or curve gridding
phase to run indefinitely.

Maximum Cell Size - This determines how large triangles are allowed to grow. This does not mean
triangles this large will actually be generated. Also, the handler for an unstructured domain contains a
tetrahedron at the center. Modifications to the maximum cell size (via the slider or text field) will be
reflected in the size of that tetrahedron.

Minimum Cell Size - Sometimes, the underlying curves can contain cusps or other regions of extremely
high curvature of which you are not aware. This can result in unexpected clustering in the vicinity of that
feature. Raising the minimum cell size can reduce the clustering in that region, by preventing the creation
of triangles smaller than the specified value. This value is overridden if larger than the minimum line or
curve length in the geometry. By default, this value is 1/10000 of the default maximum cell size, and
should rarely be changed.

4. Click mesh to mesh the curve(s).

GENERAL OPTIONS

Meshing parameters for curves may be set locally or globally. The local option (Set Local) is essential to control
mesh size in different parts of the geometry, i.e. allowing for a coarse mesh in non-important regions and a fine
mesh in critical regions.

Set Local Will set the current cell size settings for the currently selected surfaces.
This option will set the current cell size settings for the entire model, except where local settings
Set Global have been set using the Set Local option.

Unset Local This will remove local settings on the surface, and global settings will then be used.
This will force remeshing of all the lines/curves of the surface, including lines/curves that are
Force Remeshing shared with other surfaces that may already have a surface mesh. The preexisting surface mesh
for surfaces that share lines/curves will be destroyed unless both surfaces are chosen.
Override Local This will override any locally defined meshing parameters with the current mesh settings.
Settings

Surface Meshing
The Surface Meshing tool enables you to create unstructured triangular, quad-dominant, and 100% quadrilateral
surface meshes. To create them, click the Unstructured Meshing tool in the Grid toolbox.

Note In V2007, when gridding unstructured surfaces, the curvature criteria now applies to both boundary and surface
curvature. This alleviates the need to specify interior sources to resolve high surface curvature regions.

276
Mesh Tab

Surface Meshing Button

Surface Meshing Panel

Generate a surface mesh


1. Select the Surface Meshing tool

2. Select a set of surfaces to mesh

3. Select the desired mesh type: Triangle, Quad Morphing, Quad Paving, or Triangular meshing using
Advancing Front.

4. Set the following control parameters to govern how you want to generate the grid.

277
CFD-GEOM V2014.0 User Manual

Automatic - Models often contain geometric features in close proximity to other features, but to which
they aren’t connected. For example, a small feature (a hole) in close proximity to the outer boundary of a
surface, generating a mesh suitable for CFD analysis can be challenging when geometric features are not
"aware” of each other. One technique for making features aware of each other is to artificially connect
them with curves/surfaces. Another technique is to manually control local mesh spacing through the use
of sources.

In CFD-GEOM V2007.2 and later, geometry analysis is performed (behind the scene) at the front-end of
the surface and volume meshers. Based upon feature proximity, local curvatures, small features, etc., an
octree background mesh is generated (to provide spatial information to the curve, surface, and volume
meshers behind the scene). This background mesh provides spatial information to the surface and volume
meshers. During surface and volume meshing, these meshers query the background mesh for local
spacing information and use this information to control the resulting local element size.

Adapt to Curvature - Determines whether or not the curvature of curves and surfaces in the domain is
taken into account when gridding the boundaries and interiors of the surfaces. When used with the
Curvature Criterion angle, you can control how coarse or fine to resolve high curvature regions.

Maximum Curvature - An angle value that will create a higher quality grid. Disabling this option can be
useful for generating a coarse grid.

• Transition Factor - In the first phase of triangular surface grid generation, the lines and curves that bound the
surfaces are gridded. The transition factor governs how quickly the segment lengths grow along these entities.
For example, given a transition factor of 1.1, CFD-GEOM will attempt to make a segment 1.1 times longer than
the previous segment. CFD-GEOM will attempt to guarantee that, given any two adjacent grid segments, the
ratio of the length of the larger segment to that of the smaller segment will never exceed the transition factor.
When trim loops contain structured edges, this might not be possible in some cases. The transition factor
must be greater than or equal to one. However, values smaller than 1.01 may cause the grid segment
smoother to fail to converge. This will cause the line or curve gridding phase to run indefinitely.

Maximum Cell Size - This determines how large triangles are allowed to grow. This does not mean
triangles this large will actually be generated. Also, the handler for an unstructured domain contains a
tetrahedron at the center. Modifications to the maximum cell size (via the slider or text field) will be
reflected in the size of that tetrahedron.

Minimum Cell Size - Sometimes, the underlying curves can contain cusps or other regions of extremely
high curvature of which you are not aware. This can result in unexpected clustering in the vicinity of that
feature. Raising the minimum cell size can reduce the clustering in that region, by preventing the creation
of triangles smaller than the specified value. This value is overridden if larger than the minimum line or
curve length in the geometry. By default, this value is 1/10000 of the default maximum cell size, and
should rarely be changed.

5. Click mesh to mesh the surface(s).

Note Using the Advancing front triangular surface meshing has the current limitations:

o Interior surface sources are ignored.


o Interior surface curvature is not resolved.
o Slower meshing that may fail depending on boundary point distributions or high interior surface
curvature.

278
Mesh Tab

o When the method fails then it will automatically invoke the traditional Delaunay triangle meshing
scheme.

GENERAL OPTIONS

Similar to Curve Meshing, cell sizes can now be specified surface by surface (Set Local option), or a global cell size
may be specified (Set Global).

Set Local Will set the current cell size settings for the currently selected surfaces.
This option will set the current cell size settings for the entire model, except where local settings
Set Global have been set using the Set Local option.

Unset Local This will remove local settings on the surface, and global settings will then be used.

Thin Walls in CFD-ACE+ require special mesh considerations in CFD-GEOM. You can now set a Thin Wall under the
surface meshing options. This used to be under the Right Click −> Properties of a surface, but is now located under
Special Options in the Surface Meshing tool.

The Grid Only Ungrid option is removed in V2007, but has been replaced with other options that allow more
control over meshing.

Remesh Curves To remesh a surface that already has mesh, select this option. This will remesh all the bounding
curves for the surface and generate a new surface mesh. If the surface shares a line/curve with
another surface, that curve will not be remeshed (see the next option).
Force Line/Curve This will force remeshing of all the lines/curves of the surface, including lines/curves that are
Remeshing shared with other surfaces that may already have a surface mesh. The preexisting surface mesh
for surfaces that share lines/curves will be destroyed unless both surfaces are chosen.
Force Surface This option allows you to remesh all surfaces in the model. There could be meshed surfaces and
Remeshing unmeshed surfaces in the model at any given time. If all surfaces are selected, then this option
needs to be checked, else only unmeshed surfaces will be meshed.
Override Local This will override any locally defined meshing parameters with the current mesh settings.
Settings

Boundary Layer Meshing


The boundary layer meshing tool can be used to specify the parameters for optional boundary layer meshing prior
to tetrahedral mesh generation. The parameters allow the control of the exact near wall spacing, the number of
layers, the growth factor for the boundary layer mesh and the enabling/disabling of boundary layer meshes on a
per surface/face basis. Additionally, instead of specifying the exact near wall spacing, the spacing can be
automatically determined according to a representative length which varies as the local surface element size. The
representative length multiplied by a user specified factor to compute the layer thickness. The parameters are
specified on a per Shell basis, i.e., any faces/surfaces present within a selected shell will use the same meshing
parameters. The total thickness of the boundary layer as specified with the parameters is displayed next to the

279
CFD-GEOM V2014.0 User Manual

"Total Thickness" label. Also, the fields can be sorted by their enabled/disabled state by clicking on the "Boundary
Layer Status" header.

Boundary Layer Meshing Button

Boundary Layer Meshing Panel

280
Mesh Tab

Invocation of this tool allows you to select any desired shell within the model for boundary layer meshing. Upon
selection of a shell the list box will display the faces and surfaces present within the shell and their current
boundary layer meshing setting. The activate boundary layer check box indicates if the shell has been enabled for
boundary layer thus, a specific shell can be easily activated/deactivated for boundary layers regardless of the
setting on each of the faces or surfaces present within the shell. The text fields will become enabled and show the
current boundary layer meshing parameters. Each face/surface which has an enabled boundary layer mesh will
graphically display the exact nature of the boundary layer mesh as specified in the text fields and any modifications
to the boundary layer parameters are immediately displayed; the graphical display of the representative boundary
layer mesh is disabled when the local thickness option is enabled.

Pressing of the Globally Activate button will globally enable boundary layer meshing for all shells present in the
model. To globally deactivate boundary layer meshing first press the Globally Activate button which will set its text
to Globally Deactivate and then a subsequent press will disable the boundary layers.

The list box will display the faces and surfaces within the selected shell and their boundary layer enabled/disabled
status. Selecting graphically or from the list will highlight the entity and activate the Enable and Disable buttons
located just below the list. A press of the Enable button activates boundary layer meshing while the Disable button
deactivates boundary layer meshing for any selected face/surface entity.

After the required parameters have been set then press the Apply button or middle-mouse button in the graphics
area to apply the settings to the shell. A press of the Cancel button will restart the tool.

Select Truncate to truncate the boundary layers where intersections with either geometry or boundary layers
occur. This option is automatically enabled for model files earlier than 2013.3. Turn off this option to ensure that
the number of boundary layers will be honored and the local first layer height reduced. The truncate off is the
default option.

Select Absolute Thickness to specify the exact desired thickness for the first layer away from the wall. Local
Thickness indicates that the first boundary layer thickness is a function of the local surface element size. Selecting
the local thickness option will disable the “Initial Thickness” text field and activate the “Area Factor” field. The area
factor is multiplicative factor applied to the representative length which is a function of the local surface element
cell size to compute the layer thickness, for example, if the representative length is 4mm then an area factor of .25
will yield a layer height of 1mm. The final example, located below, shows an example of applying the local
thickness option.

The boundary layer mesher will automatically enable certain faces/surfaces for boundary layer meshing in order to
prohibit the following cases:

1. Non-Conformal meshes such that some nodes of a attached grid system are projected while other
adjacent nodes are not.

2. Selection to prohibit projection onto structured faces and/or edges. For instance, if a non-boundary layer
mesh surface uses an edge in its construction but has a surface/face adjacent with boundary layers
enabled then this surface will be automatically selected for boundary layer meshing.

3. Selection of surfaces which are used for multiple shells and adjacent semi-structured domains.

281
CFD-GEOM V2014.0 User Manual

EXAMPLES

CASE 1: BOX

For the box shown above, boundary layer meshing was enabled for all the surfaces with the following parameters
:initial thickness: .01, growth factor: 1.2, and number of layers: 5.

The tetrahedral meshing tool was then invoked on this domain. The image below shows the result; notice that only
two boundary layers were generated because the specified parameters caused self-intersection of the boundary
layers after the second layer - this can be remedied by changing the initial thickness to a smaller value.
Occasionally, you will also get differing numbers of layers within the same shell, i.e., the boundary layer mesher
will generate as many layers as possible where it can while trying to maintain reasonable mesh quality.

Now a second box case is generated where the same boundary layer meshing parameters are used as above
except that only the top and bottom surfaces are enabled for boundary layer meshing while the remainder are
disabled. The image below shows the results; note that the boundary layer mesh is automatically projected onto
the side surfaces and all five boundary layers are generated.

282
Mesh Tab

CASE 2: BOX IN A BOX


Similar to the first case except this model contains two shells. The outer shell has boundary layers specified only
for the top and bottom surfaces with the same parameters as above, while the interior shell has boundary layers
specified for all surfaces with an initial thickness of .005 and 9 boundary layers.

283
CFD-GEOM V2014.0 User Manual

CASE 3: CAD PART

The red surfaces were enabled for boundary layers while all other surfaces were disabled. The resulting surface
mesh is shown below.

Note that the boundary layer mesh is automatically projected onto neighboring surfaces.

CASE 4: LOCAL THICKNESS OPTION


The first image below shows the boundary layer growth with an exact specified thickness while the subsequent
image shows the optional behavior where the growth is based on a local surface element size; notice the element
size is dependent on the local surface cell size.

284
Mesh Tab

CASE 5: TRUNCATE OPTION

The first image below shows the boundary layers generated when the truncate option is on; notice that the
number of boundary layers varies. The image to the right shows the boundary layers generated when the truncate
option is off; notice that the number of boundary layers remains constant but the first layer and overall boundary
layer height varies.

Tet Meshing
The Tet Meshing tools generate tetrahedra (and in some cases, pyramids) within a triangulated unstructured
domain. To use these tools, click the Unstructured Meshing Options −> Tet Meshing tool in the Mesh toolbox. CFD-
GEOM’s tetrahedral gridder is based upon a hybrid Delaunay/Advancing-Front technique. The resulting grids are
boundary conforming. That is, the boundary triangulation is not modified in any way during the grid generation
process and the boundary triangulation bounds the resulting tetrahedral grid. Within this section, boundary points

285
CFD-GEOM V2014.0 User Manual

refer to the nodes in the boundary triangulation. Field points refer to nodes generated in the interior of the mesh
to improve mesh quality.

Tip - Before starting the tetrahedral grid generator, please ensure that your Unstructured Domain has been
completely triangulated. Also, make sure that the domain handlers point into the region that you wish to grid. The
options for creating tetrahedral grids, from right to left, are:

The Generate Tetrahedral Grid button enables you to generate a tetrahedral grid.

Tet Meshing Button

286
Mesh Tab

Tetrahedral Meshing Panel

Generate a tetrahedral grid


1. Click the Tet Meshing button in the Unstructured Meshing toolbox. The Tetrahedral Meshing panel
appears.

Automatic - Models often contain geometric features in close proximity to other features, but to which
they aren’t connected. For example, a small feature (a hole) in close proximity to the outer boundary of a
surface, generating a mesh suitable for CFD analysis can be challenging when geometric features are not
"aware" of each other. One technique for making features aware of each other is to artificially connect
them with curves/surfaces. Another technique is to manually control local mesh spacing through the use
of sources.

287
CFD-GEOM V2014.0 User Manual

In CFD-GEOM V2007.2 and later, geometry analysis is performed (behind the scene) at the front-end of
the surface and volume meshers. Based upon feature proximity, local curvatures, small features, etc., an
octree background mesh is generated (to provide spatial information to the curve,surface, and volume
meshers behind the scene). This background mesh provides spatial information to the surface and volume
meshers. During surface and volume meshing, these meshers query the background mesh for local
spacing information and use this information to control the resulting local element size.

2. Enter an transition factor in the Transition Factor field. This parameter governs how rapidly cell sizes grow
towards the interior of a domain. In general, the first layer of tetrahedra generated off the boundary
triangulation will consist of tetrahedra whose volumes are equivalent to the areas of the triangles from
which they are grown. The volume of tetrahedra in subsequent layers will be roughly equal to those in the
previous layer multiplied by the expansion factor. Given a fairly uniform surface triangulation, non-unity
expansion factors will almost always result in smaller cells near the domain boundaries and larger cells in
the interior. Given boundary triangulations of widely varying point spacings, or given the presence of
point sources in the domain interior, CFD-GEOM will attempt to honor the specified expansion factor.
However, it will not do so at the expense of grid quality.

Note: Valid values of this parameter range from 1 to 3, with 1.1 being the default. Values less than one
are not supported. To make cells grow smaller towards the mesh interior, use sources in the domain
interior.

3. Select one of the following point placement options. During tetrahedral grid generation, CFD-GEOM adds
points to the mesh interior. These points are often referred to as field points. CFD-GEOM offers for two
strategies for field point generation. These two strategies differ in how they control mesh spacing in the
domain interior.

Default - The Default method, based upon an advancing front algorithm, tends to increase cell sizes away
from the mesh boundaries. The rate of increase is controlled by the Expansion Factor (see below). Prior to
CFD-GEOM version 2003.0.1.14, this was the only field point placement strategy in CFD-GEOM, and is still
the preferred strategy for most applications.

Linear Progression - The Linear Progression strategy controls interior mesh density by linearly
interpolating between opposing mesh boundaries. This method tends to produce smoother meshes in
domains where the outer boundary contains a coarse triangulation and the interior boundary contains a
much finer triangulation (i.e. external flow applications). With this method, interior mesh spacing is
controlled almost purely by the grid characteristics of the boundary triangulation. Hence, the Expansion
Factor is not applicable when this method is used. Sources, however, can still be used to locally control
mesh spacing.

4. Click Apply.

General Options
Remesh Curves To remesh a surface that already has mesh, select this option. This will remesh all the
bounding curves for the surface and generate a new surface mesh. If the surface shares a
line/curve with another surface, that curve will not be remeshed (see the next option).
Force Line/Curve This will force remeshing of all the lines/curves of the surface, including lines/curves that
Remeshing are shared with other surfaces that may already have a surface mesh. The preexisting
surface mesh for surfaces that share lines/curves will be destroyed unless both surfaces are

288
Mesh Tab

chosen.
Force Surface This option allows you to remesh all surfaces in the model. There could be meshed surfaces
Remeshing and unmeshed surfaces in the model at any given time. If all surfaces are selected, then this
option needs to be checked, else only unmeshed surfaces will be meshed.
Override Local Settings This will override any locally defined meshing parameters with the current mesh settings.

Because CFD-GEOM generates boundary-conforming tetrahedral meshes, the meshes can be


no better than the boundary mesh. That is, tetrahedra (or pyramids) grown from high-aspect
ratio triangles and quads will have small minimum angles. Please keep this in mind when you
build your unstructured domain from structured faces.

Note Due to the variety of quality requirements among different flow solvers, CFD-GEOM does not currently
provide controls for specifying minimum dihedral angles, minimum solid angles, centroid/face angles (used by
CFD-ACE), etc. Instead, it is driven by its own minimum quality criteria. These criteria are generally more stringent
than other criteria, and will usually result in satisfactory grids. However, determining whether a specific criterion
has been met can be accomplished with the grid quality button (see Grid Quality). To activate the volume grid
generation algorithm, select an unstructured domain that has a valid surface grid. The algorithm automatically
generates the volume mesh.

Mesh Sources

INTRODUCTION TO MESH SOURCES

In CFD-GEOM, there are two distinct types of mesh sources for controlling triangular and tetrahedral mesh
generation: Volumetric sources (introduced in V2014.0) allow the user to specify volumes (box, sphere, cylinder)
where the mesh is to be refined based on a target cell size. These volumes can lie in a single domain or span
multiple domains. The source volumes influence the entire meshing process from curvilinear meshing, through
triangular meshing, and finally through tetrahedral meshing. If enabled, an additional step is performed at the
front-end of the meshing process. This step sets up additional data that will be used by the meshers to meet target
spacing requirements. Under some circumstances, this may double the memory requirements of meshing. You
should, therefore, use these types of sources with caution if you have a limited amount of RAM.

Note Volumetric sources do not affect the surface mesh when using the Quad Paving method.

"Corner point sources", "surface interior sources", and "tet sources, " available now for several years, allow for
refinements during certain phases of mesh generation. For example, "Tet Sources" allow for refinement during
tetrahedral meshing, but have no influence over curve and surface meshing. Though these 3 types of sources are
not as powerful as the newer volumetric sources, they can prove useful in some circumstances. Moreover, they do
not have the memory overhead of volumetric sources.

289
CFD-GEOM V2014.0 User Manual

VOLUMETRIC MESH SOURCES

The Define Mesh Sources tool allows you to create or redefine volumetric sources that are used to control
triangular and tetrahedral grid spacing at user-defined locations. Generally, the source definition consists of three
parts: source type, source coordinates, and grid refinement settings. When a different source type is selected, the
corresponding fields appear on the panel for you to enter the parameters. Regardless of the source type, the
method of specifying the amount of refinement is the same.

Create a source
1. Click the Define Mesh Sources tool in the Unstructured Meshing Options toolbox.
2. Choose a source type.
3. Change the properties as required. See the note later in this discussion on surface selection for box
sources.
4. Click Apply or press the middle mouse button to complete the operation.

Modify a source
1. Click the Define Mesh Sources tool in the Unstructured Meshing Options toolbox.
2. Select an existing source. Its current properties will be displayed.
3. Change the properties as desired.
4. Click Apply or press the middle mouse button to complete the operation.

Define Volumetric Mesh Sources Tool

290
Mesh Tab

Define Volumetric Mesh Sources Panel

The following provide additional information about each source type.

Box Sources
A box source is used to refine the grids inside a geometric box. To define a box source, the minimum and maximum
corners of the box must be specified, along with the grid size in the box. The box determines the region where the
grid is refined based on the given grid size. Note that, rather than manually specifying the box corners, you may
instead select one or more surfaces. CFD-GEOM will construct a minimal box source around these surfaces.

291
CFD-GEOM V2014.0 User Manual

Sphere Sources
A sphere source is used to refine the portion of the mesh inside of a sphere. A radius and sphere center is used to
define the sphere size and location.

Cylinder Sources
A cylindrical source is used to refine the grids between the interior radius and exterior radius region. The cylinder is
defined by the bottom center location, axis direction, length, inner radius, and outer radius. The inner radius
should be 0 or larger, but less than the outer radius. The axis direction is not automatically normalized.

Cell Size
This specifies the target cell size inside the source.

The Source Browser


This browser lists all existing sources and their properties. When selecting a source, you may use this browser, the
viewer, or the model tree. Note that there is an invisible resize handle located immediately above this browser.

CORNER POINT SOURCE


The Add Corner Point Source to Domain tool enables you to add corner points of loops to give extra gridding
information for the current domain. By selecting the Corner Point Source option, you may select a point that is an
endpoint of one of the underlying entities of a loop and specify the radius (the length) of the cells that will
emanate from this point.
For example, if you are generating a triangular grid on a 10x10 square with Maximum Cell size of one, you will
receive 10 points along each of the four lines making up the box. By applying a corner point source with a radius of
0.1, the number of points distributed along the two lines that connect to each other at that point will be much
higher than before. Similarly, the resulting triangles will also be much more dense in that corner than in the
remainder of the box.

Corner Point Source Button

292
Mesh Tab

Corner Point Source(s) Panel

Add a corner point source to the domain


1. Click the Corner Point Source button in the Unstructured Meshing toolbox. The Corner Point Source(s)
panel appears and the Status Line prompts you to select an unstructured domain.

2. Select the unstructured domain. For 2D geometries, the unstructured domain consists of open surface
sets in the Z = 0 plane. The Status Line prompts you to select a corner point.

3. Select a point in the graphics area.

4. Enter the radius in the Radius field of the Add Source panel.

5. Click Add/Edit to add the point or modify the point coordinates. Click Remove to delete the corner point.

6. Press the letter "q" on the keyboard to quit the Add Corner Point mode.

INTERIOR SOURCE

The Interior Source tool enables you to define a source interior to a surface. For interior sources, you may select
points or edges. If a point is selected, you are required to specify a radius.

If an edge is selected, the radius information is calculated for each grid point from its neighboring nodes. Once the
source entity is selected and the appropriate radius information is obtained, CFD-GEOM will associate the source
entity with the surface. Once the triangulation algorithm is invoked, the interior source information will be added
to the surface mesh at generation time. In this way, the desired clustering is obtained with a smooth transition to
the remainder of the surface grid.

Note Interior sources must not be placed directly on (or very close to) any boundary of the surface. If special
spacing is needed on these entities, it is recommended that you split the entity at the desired location and then
add a corner point source at that location.

293
CFD-GEOM V2014.0 User Manual

Interior Source Button

Surface Interior Source(s) Panel

Add a source to a surface


1. Click the Interior Source button in the Unstructured Meshing toolbox. The Surface Interior Source(s) panel
appears and the Status Line prompts you to select a surface.

2. Select the surface.

3. Select a point in the graphics area.

4. Enter the radius in the Radius field of the Add Source panel.

5. Click Add/Edit to add the point or modify the point coordinates. Click Remove to delete the corner point.

TET SOURCE

The Tet Source button enables you to add volume source to a domain. (Note: When adding point sources to
tetrahedral domains, the Linear Progression method to tetrahedral grid generation works best.)

Tet Source Button

294
Mesh Tab

Domain Interior Source(s) Panel

Add a volume source


1. Click the Tet Source button in the Tetrahedral Grid toolbox. The Domain Interior Source(s) panel appears
and the Status Line prompts you to enter the radius.

2. Enter the radius.

3. Click Add/Edit to add the volume source.

Destroy Selected Meshes


The Destroy Selected Meshes tool destroys selected unstructured surface meshes and the volume meshes that use
them. This can be useful when you need to remesh part of an unstructured domain's surface mesh without
remeshing the entire domain. During unstructured triangular and quadrilateral mesh generation, the first phase of
grid generation involves line and curve gridding. The resulting line/curve grids are then used during the generation
of triangular and quad meshes on those surfaces that share them. This guarantees that adjacent gridded surfaces
share a common boundary. In certain circumstances (described below), some line and curve grids may be deleted
by this tool. This tool performs the following steps:

• The surface mesh associated with each selected loop is deleted.


• The volume meshes on any associated unstructured domains and semi-structured domains are deleted.
• For each line/curve in the model, if every loop that uses the entity has been selected, the line/curve grid is
deleted.

Destroy Selected Meshes Button

295
CFD-GEOM V2014.0 User Manual

Destroy Selected Meshes Panel

Destroy an unstructured mesh


1. Click the Destroy Selected Meshes button in the Unstructured Surface toolbox.

2. Select one or more loops containing unstructured triangular or quadrilateral meshes.

3. Click the middle mouse button. Note that an easier alternative is to pick the surface grids themselves
(which implicitly picks the loops that own them).

Honeycomb Meshing
The honeycomb meshing tool allows you to construct 3-D honeycomb meshes on unstructured domains. Beginning
with V2013.0, it is now possible to generate 2-D honeycomb meshes on trimmed surfaces that lie in the XY plane.
These meshes are so named because of the resemblance of the surface meshes to the structures constructed by
honey bees. 3-D honeycomb meshes are derived from tetrahedral meshes. Cells in a 3-D honeycomb mesh will
typically consist of polyhedra with arbitrary numbers of faces. These faces will typically be constructed from 4 or
more nodes (though triangles are possible as well). In convex regions in a model, hexahedral cells will typically
dominate. 2-D honeycomb meshes are derived from triangular meshes, and consist of polyfaces defined by an
arbitrary number of edge segments (pentagons and hexagons will typically dominate). The properties of
honeycomb meshes make them nearly ideal for use in the CFD-ACE solver. These properties include:

• Fewer cells than the corresponding 3-D tetrahedral mesh or 2-D triangular mesh
• More cells neighboring each cell
• Improved alignment with flow field
• Improved face/centroid angles between cells

2-D/3-D Honeycomb Meshing

Such meshes typically result in faster convergence and more accurate results in the CFD-ACE and CFD-FASTRAN
solvers than do the corresponding tetrahedral (triangular) meshes from which they are derived.

Both the 3-D and 2-D meshers are accessible from this tool. Depending upon the types of entities in the model,
pressing the Apply button or Middle Mouse will invoke the appropriate mesher.

296
Mesh Tab

To use the 3-D honeycomb mesher, you should first ensure that all unstructured domains have a tetrahedral mesh.
You may then select this tool, and press middle-mouse or Apply to begin meshing. Please note the following
restrictions in the current release of CFD-GEOM:

• The model must contain at least one unstructured domain and all unstructured domains must contain a
tetrahedral mesh. All unstructured domains will be honeycomb-meshed simultaneously. It is not possible
for some domains to have honeycomb meshes while others have tetrahedra meshes. This is crucial to
ensuring proper connectivity between adjacent domains.
• Unstructured domains must contain only tetrahedra. The honeycomb mesher can not currently make the
conversion between pyramids/prisms/hexes and polyhedra (this will be remedied in a future release).
• The model may contain structured and semi-structured domains. However, they may not share
surfaces/faces with any unstructured domains (this will be remedied in a future release).

Please note the following additional issues:

• In terms of memory usage, honeycomb meshing is expensive. In most cases, you should have ~1GB per
million tetrahedra in the input mesh(es). On 64-bit platforms, more memory may be required.
• When output to DTF, such meshes are written to polyzones. Due to a limitation in DTF, such zones cannot
be "updated". If you change mesh parameters and remesh the model, you will need to write a fresh DTF
file and repeat the model setup in CFD-ACE-GUI or CFD-FASTRAN-GUI.
• Some cells may be "weakly non-convex". Such a cell is non-convex, but its cell center lies within the cell. In
addition, most faces will be at least slightly non-planar. In general, this should not present any problems
for the CFD-ACE and CFD-FASTRAN solvers.

To use the 2-D honeycomb mesher, you should first ensure that all trimmed surfaces have a triangular mesh. You
may then select this tool, and press middle-mouse or Apply to begin meshing. Please note the following
restrictions in the current release of CFD-GEOM:

• The model must contain at least one trimmed surface, and all trimmed surfaces must contain a triangular
mesh. All trimmed surfaces will be honeycomb-meshed simultaneously. It is not possible for some
surfaces to have honeycomb meshes while others have triangular and/or quad meshes. This is crucial to
ensuring proper connectivity between adjacent surfaces. Honeycomb meshing is not currently supported
on discrete surfaces.
• Trimmed surfaces must contain only triangles. This may be remedied in a future release.
• The model may contain structured Face entities. However, they may not share edges with any trimmed
surface.
• Please note the following additional issues:
• When output to DTF, such meshes are written to polyzones. Due to a limitation in DTF, such zones cannot
be "updated". If you change mesh parameters and remesh the model, you will need to write a fresh DTF
file and repeat the model setup in CFD-ACE-GUI or CFD-FASTRAN-GUI.
• Some cells may be "weakly non-convex". Such a cell is non-convex, but its cell center lies within the cell. In
general, this should not present any problems for the CFD-ACE and CFD-FASTRAN solvers.

Tip When you wish to use the honeycomb mesher, it is recommended that this be the last step you perform
before output to DTF.

297
CFD-GEOM V2014.0 User Manual

General Volume Grid Sweeping Options

General Volume Grid Sweeping Options


The General Volume Grid Sweeping toolbox provides options for creating Structured Domains and Semi-Structured
Domains via the following four methods:

Linear Extrusion
Revolution
Non-linear Sweep
Radial Extrusion

In this section we will refer to these methods collectively as "sweeping” methods. In all four methods, 3-D volume
grids are generated by sweeping a profile through the volume to be gridded. A profile may consist of structured
Faces and meshed surfaces. When sweeping Faces, Blocks are generated. When sweeping meshed surfaces, Semi-
Structured Domains are generated.

General Volume Grid Sweeping Options

Tip To simplify the process of picking a profile to be swept, it is recommended that you enable shaded grid display.
By doing this, you can simply pick the grids to be swept. CFD-GEOM will automatically select the associated
entities.

During volume grid sweeps, structured faces are generated along the sweep path. These faces form the sides of
the newly swept structured domains and semi-structured domains. This has two implications:

• A face is swept from each Edge or Composite Edge in the profile.

• When semi-structured domains are swept from surfaces, proper connectivity must be established
between the side faces and the surfaces. If a surface is built from lines/curves instead of edges, CFD-
GEOM will automatically place edges on those entities and rebuild the surface from the edges. The end
result is that the surface will consist exclusively of edges. These automatically generated edges will have a
general distribution type, and their grid points will match the surface's mesh.

298
Mesh Tab

• To reduce the number of faces generated along the extrusion path, use the Create Composite Edge or
Create Composite Edges tools to combine edges prior to sweeping.

Linear Extrusion
The Linear Extrusion tool allows you to linearly sweep structured Blocks and semi-structured prismatic/hex meshes
from structured Faces and unstructured surface grids, respectively. A variety of options exist for specifying
extrusion direction and distance, and for controlling certain aspects of the generated grids.

Linear Extrusion Button

Block/Prism Extrusion Panel

299
CFD-GEOM V2014.0 User Manual

Extrusion Several options exist for specifying extrusion direction. These options become available once you
Direction have completed picking the sweep profile entities.
X, Y, or Z - extrusion will occur along one of the principal axes
Existing Edges - extrusion will occur along one or more selected edges. If you select this option, you
will be asked to select a set of one or more edges. At least one of the edges must share an endpoint
with a line, curve, or edge in the sweep profile. This helps CFD-GEOM determine the direction and
orientation of the sweep. If more than one edge is selected, all selected edges must form a
connected set with no branches. The direction(s), distance(s), and number(s) of grid points in each
extrusion layer are implied by the edges themselves. Note that if any of the selected edges has any
curvature, that curvature will not be honored.
Point-to-point - extrusion will occur along a path whose direction(s) and distance(s) are described by
two or more picked points. The number of extrusion layers will be equal to the number of picked
points minus one. Note that the order in which points are picked is extremely important.
Existing Lines - extrusion will occur along one or more selected lines. If you select this option, you
will be asked to select a set of one or more lines. At least one of the lines must share an endpoint
with a line, curve, or edge in the sweep profile. This helps CFD-GEOM determine the direction and
orientation of the sweep. If more than one line is selected, all selected lines must form a connected
set with no branches. The direction(s) and distance(s) in each extrusion layer are implied by the lines
themselves
Vector - extrusion will occur along a user-specified vector (dx, dy, dz). Note that this vector will not
be normalized when the extrusion is performed.

Vector The dx, dy, and dz fields are relevant only when the "Vector” extrusion direction has been selected.
These fields specify the extrusion direction vector, and are not normalized when CFD-GEOM
performs the extrusion.
Distance This field allows you to specify the distance of extrusion. For X, Y, and Z extrusion directions, the
extrusion length will equal this value. For a Vector extrusion, the extrusion length will equal the
length of the (dx,dy,dz) vector times this value. For Existing Edges, point-to-point, or Existing Lines
extrusions, this field is irrelevant.
# Points This field specifies the number of grid points to use in the extrusion direction. When extruding along
existing edges, this field is irrelevant, because the number of grid points is implied by the edges
themselves.
# Times This field specifies the number of times to perform the extrusion.
Create This option is available when at least two Faces have been selected. When set, a block will be
Multiple extruded from each selected face. When unset, and if the selected faces collectively form a valid IJ
Blocks topology, a single block will be extruded from the collection of faces.
Link Edges If selected, all edges (running in the direction of extrusion) in each extrusion layer are linked via an
Edge Linking Group. Note that pre-existing edges that already belong to Edge Linking Groups are
ignored.

Linearly extrude volume grids


1. Select the Linear Extrusion tool in the General Volume Grid Sweeping toolbox

300
Mesh Tab

2. Select a mesh profile consisting of faces and/or meshed trimming loops to extrude (see General Volume
Grid Sweeping Introduction for a discussion of mesh profiles). Press middle-mouse when done specifying
the sweep profile.

3. Specify an extrusion direction. Several of these options may require additional picking (see discussion of
extrusion direction below).

4. Specify remaining options and press middle mouse to complete the extrusion(s).

Revolution
The Revolution tool allows you to revolve structured Blocks and semi-structured prismatic/hex meshes from
structured Faces and unstructured surface grids, respectively. A variety of options exist for specifying the
revolution axis, and for controlling certain aspects of the generated grids.

Revolution Button

301
CFD-GEOM V2014.0 User Manual

Block/Prism Revolution Panel

Revolution Axis Several options exist for specifying revolution axis. These options become available once
you have completed picking the sweep profile entities.
X, Y, or Z - revolution will occur about one of the principal axes
Existing Line - revolution will occur about an existing line. If you select this option, you
will be asked to select a line.
2 Points - revolution will occur about an axis described by 2 selected points. You will be
prompted to select these points..
Point and Vector - revolution will occur about an axis described by a picked point and an
axis direction vector (specified in the dx, dy, and dz fields). You will be prompted to select

302
Mesh Tab

a point.
2 Coordinate Sets - this option is similar to the "2 Points” option except that the 2 points
are specified as coordinate triplets in the (x1,y1,z1) and (x2,y2,z2) fields.
Revolution Axis Details These fields are used to specify values needed when using the "Point and Vector” and "2
Coordinate Sets” options described above
Angle This field specifies the angle (in degrees) through which to revolve grids. The effect of this
field will depend upon the orientation of the specified axis.
# Points This field specifies the number of grid points to use in the revolution "direction”.
# Times This field specifies the number of times to perform the revolution.
Create Multiple Blocks This option is available when at least two Faces have been selected. When set, a block
will be revolved from each selected face. When unset, and if the selected faces
collectively form a valid IJ topology, a single block will be revolved from the collection of
faces.
Link Revolution Edges If selected, all edges (running in the direction of revolution) in each revolution layer are
linked via an Edge Linking Group. Note that pre-existing edges that already belong to
Edge Linking Groups are ignored.
Link Opposing Edges This option will link the edges on the opposing ends of the revolved mesh.

Revolve volume grids


1. Select the Revolution tool in the General Volume Grid Sweeping toolbox

elect a mesh profile consisting of faces and/or meshed trimming loops to revolve (see General Volume
Grid Sweeping Introduction for a discussion of mesh profiles). Press middle-mouse when done specifying
the sweep profile.

2. Specify a revolution axis. Several of these options may require additional picking (see discussion of
revolution axis below).

3. Specify remaining options and press middle mouse to complete the revolution(s).

Non-linear Sweep
The Non-linear sweep tool allows you to create structured domain and semi-structured domains from sweeping
faces and unstructured surface grids, respectively, along an arbitrary path prescribed by a series of curves. The
structured domain or semi-structured domain is formed by properly positioning the original swept entities at the
end of the sweep path and then generating the remaining side faces via the Swept Face method. The Non-linear
sweeping tool generates the side faces and the underlying surfaces and then automatically projects each face onto
it's associated surface using either the closest point or normal projection methods.

Non-linear Sweep Button

303
CFD-GEOM V2014.0 User Manual

Block/Prism Sweep Panel

You must first select a set of faces or unstructured surface grids to be swept after which an arbitrary number of
connected curves defining the sweep path may be selected. The remainder of the operation is the same as for the
Swept Surface operation with the addition of an input field where the number of points may be specified to
indicate the resolution of the resulting structured domain or semi-structured domain along the sweeping path.

The swept face tool generates the underlying surface and then automatically projects the face grids onto the
associated surface using the closest point algorithm. For highly convoluted swept faces, this method may fail and
this failure is exhibited by the significant deviation of the face mesh from the underlying surface. In these
circumstances, the check box labeled as Closest may be unchecked to obtain the alternate normal projection
method. This method is far slower but the results are usually satisfactory.

A scaling factor can be applied along the sweep path such that the shape of the opposing end face will be smaller
or larger by the specified factor. Be aware that the scaling is performed about the points located on the sweep
path and the result may not be what was intended.

As the side surfaces are initially defined in a discrete sense, i.e. by positioning a number of sections along the path,
you may specify the number of discrete sections in the Steps input and thus prescribe the resolution of the surface
and thereby control the surface characteristics.

304
Mesh Tab

Typically, swept faces are created as a combination of rotations and translations. To create a swept face using only
translations; the check button labeled Fixed Orientation must be checked.

LINK EXTRUDED EDGES


If selected, all edges (running in the direction of extrusion) in each extrusion layer are linked via an Edge Linking
Group. Note that pre-existing edges that already belong to Edge Linking Groups are ignored.

LINK OPPOSING EDGES


This option will link the edges on the opposing ends of the swept mesh.

Radial Extrusion
The Grid Radial Extrusion tool allows you to extrude structured Blocks from structured Faces and unstructured
surface grids, respectively. Extrusion is performed radially about a user-specified axis, typically the center line of
the collection of entities being extruded. A variety of options exist for specifying the reference axis, and for
controlling certain aspects of the generated grids.

Radial Extrusion Button

305
CFD-GEOM V2014.0 User Manual

Volume Grid Axial Extrusion Panel

Reference Axis Several options exist for specifying the reference axis. These options become available once you
have completed picking the extrusion profile entities.
X, Y, or Z - extrusion will occur about one of the principal axes
Existing Line - extrusion will occur about an existing line. If you select this option, you will be
asked to select a line.
2 Points - extrusion will occur about an axis described by 2 selected points. You will be
prompted to select these points..
Point and Vector - extrusion will occur about an axis described by a picked point and an axis

306
Mesh Tab

direction vector (specified in the dx, dy, and dz fields). You will be prompted to select a point.
2 Coordinate Sets - this option is similar to the "2 Points” option except that the 2 points are
specified as coordinate triplets in the (x1,y1,z1) and (x2,y2,z2) fields.
Reference Axis These fields are used to specify values needed when using the "Point and Vector” and "2
Detail Coordinate Sets” options described above
Growth Type These options specify how growth is to occur. In radial extrusion, each point is moved along a
vector that passes through the point and that intersects and is perpendicular to the reference
axis. When "Use Distance” is specified, all newly created points will be located the same
distance away from the points from which they are derived. This distance is specified in the
"Distance” field. When "Use Scaling Factor” is specified, the amount of growth is determined by
a scaling factor. For example, if a point is located 10 units from the reference axis, the new
point derived from it will be 12 units from the reference axis if a scaling factor of 1.2 is
specified.
# Points This field specifies the number of grid points to use on edges radiating away from the reference
axis.
# Times This field specifies the number of times to perform the extrusion. Note that multiple extrusions
are possible only when the growth type is "Use Distance”.
Link Extrusion If selected, all edges (running in the direction of extrusion) in each extrusion layer are linked via
Edges an Edge Linking Group. Note that pre-existing edges that already belong to Edge Linking Groups
are ignored.
Link Opposing This option will link the edges on the opposing ends of the radial extruded mesh.
Edges

Radially extrude volume grids


1. Select the Radial Extrusion tool in the General Volume Grid Sweeping toolbox

2. Select a mesh profile consisting of faces and/or meshed trimming loops to extrude (see General Volume
Grid Sweeping Introduction for a discussion of mesh profiles). Press middle-mouse when done specifying
the mesh profile entities.

3. Specify the reference axis. Several of these options may require additional picking (see discussion of
reference axis below).

4. Specify remaining options and press middle mouse to complete the extrusion(s).

Structured and Semi-Structured Domain Options

Structured and Semi-Structured Domain


The Structured and Semi-Structured Domain tools enable you to manipulate structured blocks and create semi-
structured domains. To create structured and semi-structured domains, click the Structured/Semi-Structured
Domains tool in the Mesh toolbox. The options for creating structured and semi-structured domains s are:

307
CFD-GEOM V2014.0 User Manual

Block from Faces


Create All Blocks
Smooth Structured Domain
Coarsen Structured Domains
Create 2-D Block
Create Composite Block
Reorient Block
Reorder Structured Domains
Semi-Structured Domains

Structured Domain Buttons

Block from Faces


The Create Structured 3D Block tool enables you to create a 3D block. To create a structured domain via face sets,
you must manually specify six face sets that comprise the Imin, Imax, Jmin, Jmax, Kmin, Kmax sides of the block.

When you complete the sixth face set, or when the volume has been enclosed, CFD-GEOM responds with a
message on the Status Line indicating that the block was successfully created. In addition, the block handler for
this new grid block appears. CFD-GEOM automatically orders and orients the face sets such that a right-handed
block is always created. For this reason, the order in which face sets are picked is irrelevant. However, the first set
picked will usually become the Imin side of the block. To assign a specific orientation to a block, see Reorient a
Block, Composite Block or a 2D Block. As each face set is picked, CFD-GEOM checks for closure. If CFD-GEOM
determines that closure has been achieved with fewer than six face sets, it automatically generates point- or
curve-degenerate faces as needed.

308
Mesh Tab

Block From Faces Button

Block From Face Sets Panel

Create a structured using six face sets


1. Click the Block From Faces button in the Structured Domain toolbox. The Block From Face Sets panel
appears and the Status Line prompts you to select faces.

2. Select the Face Sets option.

3. Select faces for the face set comprising the Imin surface. The selected faces are highlighted in red. If you
make a mistake, click the right mouse button and select unpick to de-select the last face selected.

4. When you are finished picking faces for the first (Imin) face set, click the middle mouse button to complete
this set. The selected faces will be highlighted in the Picked Set 1 color.

5. Continue picking faces for the remaining face sets, and click the middle mouse button to complete each
set. Repeat this process for all six face sets.

Create All Blocks


The Create All Blocks tool allows for the automatic construction of multiple structured domains simultaneously
from an arbitrary number of faces.

Create All Blocks Button

Create All Structured Domains Panel

309
CFD-GEOM V2014.0 User Manual

To use this tool, select 6 or more faces and press middle-mouse or Apply. CFD-GEOM will then identify all valid
combinations of 6 four-sided faces and construct structured domains from them where they do not already exist.

Note The following limitations/restrictions apply:

• This tool constructs domains only from four-sided faces. Faces that contain degeneracies are silently
ignored.

• Only six-sided domains with 1 face per side will be constructed.

Smooth Structured Domain


The smooth block tool can be used to improve the grid point distributions within a block. This facility invokes an
iterative numerical procedure that adjusts the interior block grid distribution by the solution of an elliptic set of
nonlinear partial differential equations. The differential equations are of the Poisson type and may have zero or
non-zero forcing functions. The presence or absence of forcing functions control the eventual grid distributions.
Complete absence of forcing functions will solve the LaPlace equation and will yield the smoothest possible grid
distribution. However, any desirable clustering of grid points near the faces of the block will be lost.

Smooth Structured Domain Button

Smooth Block Panel

310
Mesh Tab

There may be one of two types of boundary conditions, Fixed or Orthogonal prescribed for each face of a block.
The Fixed boundary condition indicates that the forcing function will be zero at that face and the grid will, thus, be
of the LaPlace behavior near that face. An Orthogonal boundary condition will try to generate forcing functions
such that the grid distribution is orthogonal to the face and honor any near wall grid distribution. For 2007, a new
boundary condition type (Orthogonal + Spacing) has been provided- this option allows you to set a desired near-
wall spacing manually. By default, each face of a block will have a Fixed boundary condition.

Invocation of this tool allows you to select any desired block located within the model for smoothing. Upon
selection of a block for smoothing the list box will display the number of faces and their current boundary
conditions. Selecting faces from the list box will cause the faces to highlight and a press of either the Fixed or
Orthogonal buttons can be used to modify the boundary condition. You may input the number of iterations and
press the Apply button to perform the elliptic smoothing.

The selected block will remain active until another block is selected or the cancel button is pressed thus, you may
make boundary condition and number of iteration modifications without having to repeatedly select the face.

Coarsen Structured Domains


The Coarsen Block tool coarsens a structured 2D or 3D block using coarsening factors. You can coarsen 2D and 3D
blocks in the I and J directions and 3D blocks in the K direction.

Coarsen Structured Domains Button

Coarsen Blocks Panel

Coarsen a 2D or 3D block
1. Click the Coarsen Structured Domains button in the Structured Block toolbox. The Coarsen Blocks panel
appears.

2. Select any number of 2D or 3D blocks. The type of the first selected block determines the type allowed in
subsequent picking operations. For each selected block, a set of axes is drawn; these axes describe a
block’s orientation (and the directions in which the block can be coarsened). Once a block has been
selected, the I, J, and K factor menus becomes active.

311
CFD-GEOM V2014.0 User Manual

3. Click the arrow to the right of each factor to specify the coarsening factors. Specifying a value of one
indicates that the block will not be coarsened in that direction. For a block, the set of valid coarsening
factors in a particular direction consists of all values evenly divisible into the number of cells in that
direction. If multiple blocks are selected, the list is updated to contain only those values common to all
selected blocks.

4. Click the middle mouse button complete the operation.

Note If a block has been coarsened in a particular direction, and if the number of cells in that direction changes
(e.g. via the edge editor), the underlying structured grid is automatically updated. Coarsening is automatically
reapplied if the coarsening factor in that direction is still valid. If the coarsening factor is no longer valid, coarsening
is no longer applied to the block.

Tips

• It is recommended that you plan for block coarsening while constructing your geometry and structured
grids. Because coarsening applies to entire blocks, it may be necessary to break a block into smaller
blocks, some of which will be coarsened. It is easier to do this early in the design cycle.

• The amount of coarsening applied to a block is relative to the original structured grid (i.e. it is not
cumulative). For example, if you coarsen a block in its I-direction by a factor of two and then coarsen the
block again by a factor of two, the block is still coarsened only by a factor of two.

• The amount of coarsening (i.e. coarsening factor) in a particular direction must be evenly divisible into the
number of cells in that direction. The CFD-GEOM will only allow you to select from the set of valid values.
However, when writing GEOM scripts, you must ensure that the amount of coarsening you specify is valid.
Otherwise, coarsening will fail.

• Multiple blocks can be coarsened simultaneously. However, if the blocks do not have the same
orientation, unexpected results may occur. Dissimilar orientations can be handled in two ways. One way is
to use the Reorient Blocks tool to consistently orient the blocks; you may then coarsen those blocks
simultaneously. The alternative is to coarsen the blocks individually.

• To coarsen blocks without using arbitrary interfaces, CFD-GEOM must generate polyhedral grids with
arbitrary cell types. Such grids must be written to DTF as a DTF_POLY zone. If, during a previous session, a
particular zone was written as a structured (DTF_STRUCT) zone, and you later coarsen that zone, you will
not be able to update the DTF file. You will only be able to overwrite the file or write a new one, and then
set up the problem from scratch in CFD-GUI. This limitation may be removed in a future release.

Create 2D Block
The Create Structured 2D Block tool enables you to select a set of faces to form a structured 2D grid.

312
Mesh Tab

Create 2-D Block Button

Create 2-D Block Panel

Create a 2D block
1. Click the Create Structured 2D Block button in the Structured Block toolbox. The Status Line prompts you
to select a set of faces.

2. Select a face set that you want to use to form the 2D block. If you make a mistake, click the right mouse
button and select unpick to de-select the last selected face.

3. When you are finished, click the middle mouse button to create a 2D block from the face set. The
orientation of a 2D block is automatically determined by CFD-GEOM. For face sets lying in a constant z-
plane, the resulting 2D block will always be right-handed.

Note The orientation of a 2D block can be changed using the Orient Grid tool.

Create Composite Block


The Composite Block tool combines multiple 3D blocks into a single, composite block. The CFD-ACE flow solver
benefits, in terms of overall CPU time, from reducing, as much as possible, the number of grid blocks.

Create Composite Block Button

Create Composite Block Panel

313
CFD-GEOM V2014.0 User Manual

Use the composite block tool


1. Click the Create Composite Block button in the Structured Block toolbox. The Create Composite Block
panel appears.

2. Select all of the grid blocks to combine. If you make a mistake, click the right mouse button and select
unpick to de-select the last selected block.

3. Click Apply or the middle mouse button to complete the operation. If the block set is valid, the old blocks
become hidden and the new composite block appears with a single block handle (magenta).

TIPS
• The grid of a composite block cannot be changed without deleting the composite block and modifying the
individual blocks’ grids. Composite blocks can be reoriented using the Block Reorientation tool. (see
Reorient a Block, Composite Block or a 2D Block).
• When a composite block is deleted, the underlying block sets become visible again.
• If a block or solid volume condition is desired for one or more blocks within the composite block, set the
volume condition(s) for the member block(s) before performing the composite operation.
• Composite blocks can be created from blocks and other composite blocks. The orientation of the
underlying blocks need not be the same.

Reorient Block
The Reorient Block tool changes the I-J-K topological orientation of a single block.

Reorient Block Button

Reorient Block Panel

Reorient a block
1. Click the Reorient Block button in the Structured Block toolbox. The Reorient Block panel appears.

314
Mesh Tab

2. Select the block to be reoriented.

3. Use the J or K slider to place Imin in the desired location.

4. Use the I slider to place Jmin Kmin in the desired location.

5. Click Apply or middle mouse button to apply the new orientation. Alternatively, you can press Apply and
Propagate to apply the orientation to the current block AND to all blocks that can be reached from that
block.

Note The three sliders represent rotations about their respective orientation axes. For example, by moving the I
slider, you are rotating the J and K orientations about I, while keeping Imin and Imax fixed. This tool does not allow
you to select a left handed orientation.

Reorder Structured Domains


The Reorder Structured Domains tool enables you to change the order in which structured domains and composite
domains are written to grid files (DTF, PLOT3D, etc.). Reordering structured domains can sometimes simplify
analysis and allow some control over how parallel solver runs are distributed to multiple processors.

Reorder Structured Domains Button

Reorder Blocks Panel

Reorder structured domains


1. Click the Reorder Structured Domains button in the Structured Domain Options toolbox. The Reorder
Blocks panel appears with a list of blocks and composite blocks. The order of the entities in this list
determines the order in which the blocks will be written.

315
CFD-GEOM V2014.0 User Manual

2. Select the block and drag to the desired location to change a block's position in the list.

3. When you are finished, click Quit.

Semi-Structured Domain
The Semi-Structured domain tool enable you to create semi-structured domains by selecting a source surface,
target surface and any number of faces describing the domain. This tool allows the source and target surfaces to
have the same mesh topology but to be geometrically different. The source surface must have a mesh while the
target surface will automatically be generated to have the same mesh topology as the source surface.

The boundaries of the source and target surfaces must be edges.

Semi-Structured Domain Button

Semi-Structured Domain Panel

The following image shows an application of this tool.

316
Mesh Tab

Create a semi-structured domain


1. Click the Semi-Structured Domain button in the structured/semi-structured toolbox. The semi-structured
domain panel appears and the Status Line prompts you to select a single source surface.

2. Once the source surface has been selected then the Status Line prompts you to select a single target
surface.

3. Once the target surface has been selected then the Status Line prompts you to select a set of faces that
form a closed set. During the selection process the non-closed regions will be highlighted in green.

4. Upon a set of valid selections, the "Apply" button will activate and press of this button or a press of the
middle mouse button will create the semi-structured domain automatically mesh the target surface and
the semi-structured domain.

317
CFD-GEOM V2014.0 User Manual

Cartesian Meshing Options

Introduction to Cartesian Meshing


Beginning with V2013.0, CFD-GEOM supports Cartesian meshing using CFD-VisCART technology. This initial release
is not intended to include all of the capabilities of CFD-VisCART itself, but rather to include a large enough subset
of those capabilities to be useful in a wide variety of applications. Further enhancements will likely be made in
future releases.

Note You must have a CFD-VisCART license to access the Cartesian meshing tools in CFD-GEOM.

Advantages of Cartesian meshing in CFD-GEOM include (but are not limited to) the following:

• The geometry can consist of a mixture of traditional CAD and discrete surfaces, as well as geometries
imported from external sources and those constructed using CFD-GEOM’s powerful surface modeling
tools.
• Only surface geometries are required. It is not necessary to construct higher level entities such as
unstructured domains, semi-structured domains, or structured block entities.
• CAD cleanup (after import) is usually not necessary because, due to the nature of the mesh generation
process, the geometry does not need to be watertight. Small cracks and gaps between surfaces are
permissible. This helps overcome one of the most serious bottlenecks in mesh generation for multiphysics
applications.
• Small features not important to the simulation can be automatically removed without any time-
consuming geometry manipulation.
• These meshes tend to create a minimal number of cells, when compared to other mesh types and given
similar sets of mesh size parameters.
• Scripting and journaling are fully supported.

Cartesian Meshing Within CFD-GEOM


In conventional mesh generators, meshing is performed using a bottom-up approach where surfaces are meshed
first, followed by the volumes. In Cartesian meshing, this process is performed in reverse. A volume, known as the
Cartesian bounding box, is filled with cells. Both the bounding box and these initial cells are aligned with the X, Y,
and Z axes. Cells near the geometry are then fitted to the geometry to create a surface mesh. Finally, the cells
outside the region of interest (that is,. outside the region being simulated) are discarded.

Meshing Algorithms
Two Cartesian meshing algorithms are available. The single-domain projected meshing algorithm uses a projection
algorithm to shrink-wrap nodes near the geometry onto the geometry. This algorithm is available only for meshing
a single domain. The multi-domain intersecting meshing algorithm uses a combination of node movement and cell
splitting to fit near-geometry cells to the geometry. This algorithm is available for both single- and multi-domain
meshing needs. In other words, it can be used to mesh inside the geometry, between the geometry and the

318
Mesh Tab

bounding box, or both. In CFD-GEOM, this is the default meshing algorithm. The following figure shows an
approximation of the two meshing algorithms.

Two Meshing Algorithm Approximations

Omnitree and Octree Splitting


During generation of the initial axis-aligned mesh, the bounding box is split into cells which are recursively split
into additional cells until the requested cell size parameters are satisfied. In traditional Cartesian meshers, an
octree approach is used. That is, when a cell is split, it is split into eight cells (a split occurs in each of the X, Y, and Z
directions). Although this approach is available in CFD-GEOM, the default splitting approach is the omnitree. In this
approach, when a cell is split, it may be split only in the X direction, the Y direction, the Z direction, or any
combination of the three directions. This approach tends to produce fewer cells than the octree approach. In both
cases, when a cell is split, it may be necessary to split adjacent cells in order to avoid large differences between the
sizes of adjacent cells.

The following figure shows a 2-D approximation of the difference between the two splitting methods. Notice how
(from a 2-D standpoint) ratios of adjacent cell sizes in the omnitree may be 1:1, 2:1, and 4:1—while in the octree it
is strictly 1:1 or 4:1. These ratios extend to 3-D.

319
CFD-GEOM V2014.0 User Manual

Differences Between Splitting Methods

Domain Markers
As stated, the Cartesian meshing algorithms fill the entire bounding box with a mesh. In CFD-GEOM, the domain
marker entity is used to specify the portion(s) of the mesh that are to be preserved. A domain marker is a special
type of point placed somewhere in the volume to be preserved. For example, if a domain marker is placed
anywhere between the geometry and the bounding box, that portion of the mesh between the geometry and the
bounding box will be preserved in the final mesh. A domain marker is similar to other volumetric entities in CFD-
GEOM (for example, unstructured domains) in that it is bounded by surfaces and can be assigned volume
conditions. However, it differs in that the surfaces do not have to be grouped manually or even form a watertight
collection. Instead, the boundaries of the domain marker are determined during the meshing process.

CFD-GEOM provides two methods for specifying domain markers in CFD-GEOM. The Define Cartesian Domain
Marker tool allows you to specify domain markers manually. The Generate 3-D Cartesian Mesh tool allows you to
specify an option which instructs the mesher to automatically generate domain markers for you. This option
causes the mesher to identify all logical domains within the bounding box. After mesh generation, you can
manually delete any domains that are not of interest.

Note When you create a bounding box, a domain marker is automatically generated; this marker ordinarily will be
placed between the geometry and the bounding box.

The following figure shows an example of a mesh with two domain markers.

320
Mesh Tab

Example Mesh with Two Domain Markers

Controlling Cell Sizes


There are a variety of methods for globally and locally controlling cell sizes. Most of these settings are applied
during the generation of the initial axis-aligned mesh, before bodyfitting. A common term used in these settings is
the number levels of division to perform. Consider, for example, a bounding box with an X dimension of 1 (dx=1).
The entire bounding box itself is at level 0. If the bounding box is split once in the X direction, those cells resulting
from the split are at level 1 and have an X dimension of 0.5 (one-half the X dimension at level 0). If a cell at level 1
is split, the resulting cells are at level 2 and will have an X dimension of 0.25 (one-half the X dimension at level 1),
and so forth. Thus, the X dimension of a cell at any X level is dx/(2^level). In some cases, it is possible to specify
actual cell sizes (normal and tangential) to be generated. However, because the mesher intrinsically performs
integer splits, the achievable mesh sizes are a function of the bounding box dimensions. For example, in this case, a
value of 0.2 is not achievable. Instead, the mesher will round down to the next achievable size (0.125, level 3). This
may result in many more cells than expected. It is generally recommended that you use levels to specify mesh
refinement settings.

Additional Tools for Controlling Cell Sizes


CFD-GEOM includes three additional tools for controlling mesh size parameters. The Define Cartesian Domain
Marker tool allows you to create box, sphere, and cylinder sources; to define their location and sizes; and to
specify the amount of refinement to perform inside (and in the vicinity of) those sources. The Set Cartesian Patch
Info tool allows you to specify per-surface cell size settings, and to control other per-surface mesh characteristics.

321
CFD-GEOM V2014.0 User Manual

The Generate 3-D Cartesian Mesh tool allows you to specify various global mesh size parameters to use where
local settings have not been specified. It also allows you to specify other options such as the meshing algorithm
(single-domain projected or multi-domain intersected), the splitting type (omnitree or octree), boundary layer
settings, and others. Finally, it allows you to invoke the mesher.

Pseudo Surface Entities


Sometimes it is necessary for the mesher to create new surfaces. Consider, for example, the six sides of the
bounding box. If you are creating a mesh strictly inside the geometry, the sides of the bounding box will not be
present in the final mesh. However, if you are creating a mesh between the geometry and the bounding box, the
sides of the bounding box must be present in the final mesh and must be available for boundary condition
assignment and DTF output. To represent these six sides, CFD-GEOM constructs six artificial surfaces known as
pseudo surface entities. These surfaces are eligible for boundary condition assignment and can be
blanked/unblanked. However, they do not participate in any other modeling or meshing operations. If you
regenerate a mesh on a model containing pseudo surfaces, those pseudo surfaces are deleted and regenerated, if
necessary. Note that prior to mesh generation, you may place actual geometric surfaces on the bounding box
sides. However, because the mesher intrinsically treats the sides of a bounding box differently from geometric
surfaces, you are likely to get a very different mesh (see Set Cartesian Patch Info for more information on the
meshing parameters that can be applied to bounding box surfaces versus geometric surfaces).

There are other situations in which pseudo surface entities can be generated. For example, during meshing, it is
sometimes necessary to split surfaces to create new surfaces. There are two circumstances in which this may
happen:

1. When a surface spans multiple domains. That is, if part of the surface bounds one domain and the other
part bounds a different domain.
2. When a surface extends outside the region of interest, and is only partially meshed.

When splitting becomes necessary, CFD-GEOM constructs pseudo surfaces to represent the subsurfaces resulting
from the split. Note that, unlike most situations in geometry modeling where a split surface is deleted and replaced
by new surfaces, the original surface is not deleted when split into pseudo surfaces because it must remain
available for any subsequent remeshing operations.

There is one final circumstance in which pseudo surfaces can be generated. During mesh quality improvement, if
the mesher is unable to remove skewed cells, those cells will be blocked and faces created on their boundaries.
Such a collection of faces is assigned to a pseudo surface entity and is automatically assigned a symmetry
boundary condition. If you observe such surfaces in the final mesh, and if they lie near critical areas of the
computational domain, it is recommended that you regenerate the mesh with sources or different meshing
parameters to ensure the removal of these regions.

Note The Cartesian meshing toolbox contains tools and settings applicable only to Cartesian meshing. They are
not currently used by the tetrahedral or other meshers in CFD-GEOM.

You access the Cartesian meshing tools from the Meshing toolbox:

322
Mesh Tab

Cartesian Meshing Toolbox

The following topics discuss the five tools in the Cartesian Meshing toolbox in more detail:

Define Cartesian Bounding Box


Define Cartesian Domain Marker
Define Cartesian Mesh Sources
Set Cartesian Patch Info
Generate 3-D Cartesian Mesh

Define Cartesian Bounding Box


The Define Cartesian Bounding Box tool allows you to create the bounding box used during the meshing process.
Regardless of whether you intend to conduct external and/or internal flow simulations, the Cartesian meshing
algorithm requires the existence of a bounding box (for a description of how the bounding box is used during the
meshing process, see Introduction to Cartesian Meshing).

Create a bounding box or redefine the current bounding box’s settings


1. Click the Define Cartesian Bounding Box tool in the Cartesian Meshing Options toolbox.
2. The Geometry Information block provides information about the upper and lower bounds of the current
surface geometry, as well as its dimensions. Use this information to select the desired parameters.
3. Click Apply or press the middle mouse button to complete the operation.

Define Cartesian Bounding Box Tool

323
CFD-GEOM V2014.0 User Manual

Edit Bounding Box Panel

The following parameters are available for setting the bounding box:

Bounding Box Type


The bounding box can be a Box or a Cylinder (oval/elliptical shape is allowed). The default type is box. If the
bounding box type is cylinder, you also need to specify the axis direction. Cylindrical bounding boxes must be
aligned with the X, Y, or Z axis. The default alignment is with the X axis. You also need to specify whether or not the
mesh should be body fitted to the cylinder. The default is to body fit the mesh on the cylinder’s side. With this
option checked, the Cartesian cells are projected onto the side of the cylindrical bounding box to capture the
curvature properly as in the following figure.

324
Mesh Tab

Captured Curvature

If this option is unchecked, the projection step is skipped and a stair-step type mesh is generated there. Cells with
cell centers inside the cylindrical bounding box are retained; others are removed as in the following figure:

Cells Retained within the Cylindrical Bounding Box

325
CFD-GEOM V2014.0 User Manual

For simplicity, the side of the cylindrical bounding box is divided into four parts and thus the cylinder-type
bounding box is composed of six bounds, just like the box-type bounding box. The naming of these six bounds is
similar to that of a corresponding box-type bounding box. The size and location of the cylinder-type bounding box
is set in a manner identical to that for a box-type bounding box. The cylinder will be inscribed in an imaginary box
with the specified parameters.

xmin, xmax, ymin, ymax, zmin, zmax


These settings define the X, Y, and Z extremes of the bounding box. There are four ways to specify each of these
extremes. Note that some of these options are undefined when there is no geometry or if the geometry is 2-
dimensional.
Ratio to Body Dimension the extreme is a function of the dimension in the particular direction. For
example, if the X dimension of the geometry is 3 (i.e. dx=3), a value of 2 for
xmin will place the xmin boundary 3x2=6 units from the xmin extent of the
geometry in the –X direction. Similarly, an xmax of 5 will place the xmax side of
the box 3x5=15 units in the +X direction away from the xmax extent of the
geometry.
Distance from Geometry the extreme is placed at a particular distance from the associated extent of the
Minimum/Maximum geometry. For example if the minimum X value of the geometry is -1, an xmin
value of 2 will place the xmin side of the bounding box at -1-2=-3. Similarly, if
the maximum X value of the geometry is at 1, an xmax value of 2 will place the
xmax side of the bounding box at 1+2=3.
Distance from Geometry the extreme is placed at a particular distance from the center of the geometry.
Center For xmin, ymin, and zmin, the associated value is with respect to the –X, -Y,
and –Z directions, respectively. For xmax, ymax, and zmax, the associated
value is with respect to the +X, +Y, and +Z directions.
Coordinate the actual coordinate value is specified for that side of the bounding box.

Reset
This button resets the xmin, xmax, ymin, ymax, zmin, and zmax type/value pairs to their defaults.

Fit To Model
This button defines a minimally sized bounding box around the current geometry. Note that this doesn’t change
the type for a particular side; it only recomputes the values in the text fields. For example, if the xmax side of the
bounding box has type “Ratio to Body Dimension”, the xmax text field is set to 0*dx=0.

Define Cartesian Domain Marker


Domain markers allow you to identify which region(s) within the bounding box to mesh. Because of the nature of
the meshing process, the mesher must mesh inside the entire bounding box. Domain markers allow you to specify
which regions to preserve. For external flow applications, this is the region between the bounding box surfaces and
the geometry. In this case, the domain marker may be placed anywhere in that region. When creating a bounding
box, CFD-GEOM automatically creates one domain marker in this region which you can move using this tool. For
internal flow applications, you will want to place a domain marker inside the geometry. If you want to mesh both

326
Mesh Tab

outside and inside a geometry, and/or the inside of the geometry consists of multiple logical volumes, you will
want to place a domain marker in each region of interest.

Note: If you intend to use the multi-domain intersecting mesher, you may not need to manually specify domain
markers. See Generate 3-D Cartesian Mesh for a description of automatic domain marker generation.

Create a Cartesian Domain Marker


1. Select the Define Cartesian Domain Marker tool in the Cartesian Meshing Options toolbox.

Note if you have not yet defined a Cartesian Bounding Box, one will be generated with default
parameters.

2. Position the domain marker point in the required location.


3. Click Apply or press the middle mouse button to complete the operation.

Edit a Cartesian Domain Marker


1. Select the Define Cartesian Domain Marker tool in the Cartesian Meshing Options toolbox.
2. Select an existing domain marker.
3. Position the domain marker point in the required location.
4. Click Apply or press the middle mouse button to complete the operation.

Define Cartesian Domain Marker Tool

327
CFD-GEOM V2014.0 User Manual

Create/Edit Domain Marker Panel

Define Cartesian Mesh Sources


The Define Cartesian Mesh Sources tool allows you to create or redefine volumetric sources that are used to
control Cartesian grid spacing at user-defined locations. Generally, the source definition consists of three parts:
source type, source coordinates, and grid refinement settings. When a different source type is selected, the
corresponding fields appear on the panel for you to enter the parameters. Regardless of the source type, the
method of specifying the amount of refinement is the same (see refinement levels in the Controlling Cell Sizes
section of the introduction).

Note This tool requires the existence of a Cartesian Bounding Box. If it does not exist, one will be generated
automatically with default parameters when you open this tool.

Create a source
1. Click the Define Cartesian Mesh Sources tool in the Cartesian Meshing Options toolbox.
2. Choose a source type.
3. Change the properties as required. See the previous note on surface selection for box sources.
4. Click Apply or press the middle mouse button to complete the operation.

Modify a source
1. Click the Define Cartesian Mesh Sources tool in the Cartesian Meshing Options toolbox.
2. Select an existing source. Its current properties will be displayed.
3. Change the properties as desired.

328
Mesh Tab

4. Click Apply or press the middle mouse button to complete the operation.

Define Cartesian Mesh Sources Tool

Define Cartesian Mesh Sources Panel

The following provide additional information about each source type.

329
CFD-GEOM V2014.0 User Manual

Box Sources
A box source is used to refine the grids inside a geometric box. To define a box source, the minimum and maximum
corners of the box must be specified, along with the grid sizes in the box. The box determines the region where the
grid is refined based on the given grid sizes. Note that, rather than manually specifying the box corners, you may
instead select one or more surfaces. CFD-GEOM will construct a minimal box source around these surfaces.

Sphere Sources
A sphere source is used to refine the portion of the mesh inside of a sphere. A radius and sphere center is used to
define the sphere size and location.

Cylinder Sources
A cylindrical source is used to refine the grids between the interior radius and exterior radius region. The cylinder is
defined by the bottom center location, axis direction, length, inner radius, and outer radius. The inner radius
should be 0 or larger, but less than the outer radius. The axis direction is not automatically normalized.

Minimum Division Level


These parameters specify the minimum number of divisions to perform in the X, Y, and Z directions within the
source. At the beginning of meshing, the mesher recursively splits the bounding box into a minimum number of
cells (see Generate 3-D Cartesian Mesh). Afterwards, it performs additional splits in the sources. For example,
suppose that the global minimum number of divisions is four in each direction. Now suppose that you have added
a box source with minimum division levels of seven in each direction. The mesher, after performing four levels of
global splits, will perform three additional levels of splits inside the box source. For a more complete discussion of
cell size and levels of division, see Controlling Cell Sizes in the introduction.

The Source Browser


This browser lists all existing sources and their properties. When selecting a source, you may use this browser, the
viewer, or the model tree. Note that there is an invisible resize handle located immediately above this browser.

Set Cartesian Patch Info


The Set Cartesian Patch Info tool allows you to specify local meshing parameters on a per-surface basis. Where
possible, these parameters override global settings specified elsewhere. For example, in the Generate 3-D
Cartesian Mesh tool, you might specify a set of global surface refinement parameters. However, you may wish to
refine a subset of surfaces to a higher level. In such cases, you can use this tool to set a locally higher surface
refinement.

There are two types of surfaces upon which you may set local meshing parameters: geometric surfaces and
bounding box surfaces. Geometric surfaces (CAD and/or discrete) define your geometry, and have a wide variety of
controllable meshing parameters. These can be selected from the viewer, the model tree, or the surface browser
(described below). Bounding box surfaces are the six surfaces that form the Cartesian bounding box. In CFD-GEOM,
these are created (as necessary) by the mesh generator, and hence, do not exist prior to mesh generation.

330
Mesh Tab

However, using the surface browser, you can still set meshing parameters on them prior to mesh generation. Note
that there are fewer options available for bounding box surfaces. For example, you cannot suppress a bounding
box surface. For these reasons, this tool has two surface picking modes. It is recommended that you specify any
parameters for geometric surfaces first. Then, you should switch to bounding box surface selection mode and set
those parameters, if necessary.

Set local meshing parameters on geometric surfaces


1. Open the Set Cartesian Patch Info tool.
2. Select the target set of geometric surfaces via the viewer, model tree, or surface browser contained in this
tool.
3. Specify the required parameters.
4. Click Apply or press the middle mouse button to complete the operation.

Set local meshing parameters on a set of bounding box surfaces


1. Open the Set Cartesian Patch Info tool.
2. Click the Pick Bounding Box Surfaces button.
3. Using the surface browser contained in this tool, select the target surfaces. You will not see any visual
feedback in the viewer.
4. Specify the required parameters.
5. Click Apply or press the middle mouse button to complete the operation.

Note When the operation is complete, this tool switches back to geometry surface picking mode. If you
wish to perform additional settings on the bounding box surfaces, you should repeat step 2.

Notes

• By default, surfaces use global settings for most parameters. In such cases, you will see the string “Use
Global Setting” in the corresponding menu or text field. If selecting multiple surfaces, you may see an
empty string in a menu or text field. This does not indicate an error. It simply means that the surfaces
have different settings for the corresponding parameter. If you click Apply in this situation, that
parameter will not be modified on the selected surfaces.

• This tool requires the existence of a Cartesian bounding box. If it does not exist, one will be generated
automatically with default parameters when you open this tool.

Set Cartesian Patch Info Button

331
CFD-GEOM V2014.0 User Manual

Set Caresian Patch Info Panel

The following parameters are available for local setting.

332
Mesh Tab

Thin Wall (geometry surfaces only)


The Thin Wall option allows you to tag surfaces for special Thin Wall treatment during mesh generation. Ordinarily,
such surfaces will lie in the interior of a volume rather than on the boundaries of that volume. That is, cells from
the same volume (domain) will lie on both sides of such surfaces. Thin Walls can be used to represent baffles,
plates, and so forth whose thickness is negligible and need not be meshed, but whose area is non-negligible and
can impact the physics of a problem (such as momentum and heat transfer). Setting the Thin Wall option on a
surface instructs the Cartesian mesher that, during the meshing process, the meshes on any flagged surfaces
should be included in the final mesh. Moreover, it permits the assignment of boundary conditions to those
surfaces and subsequent output to DTF. Finally, it adds special data to those surfaces that assists downstream
applications in identifying thin wall surfaces.

Suppress (geometry surfaces only)


This option allows you to suppress surfaces. Suppressing a surface makes it invisible to the mesher during
subsequent mesh generation. This means that, although the surface remains in the model and continues to be
visible to the user, it does not participate in any meshing operations. This option should make case studies more
convenient.

Local Cell Size Options (geometry and bounding box surfaces)


This option specifies the cell size method to use when refining around the selected surfaces. Use Global Settings
instructs the mesher to use the Surface Refinement Settings specified in the Generate 3-D Cartesian Mesh tool.
Cell Size instructs the mesher to use locally specified level numbers in the X, Y, and Z directions. Normal and
Tangential instructs the mesher to use locally specified normal and tangential cell sizes.

Boundary Layer Growth (geometry and bounding box surfaces)


This option allows you locally to enable/disable boundary layer meshing for the selected surfaces. By default,
boundary layer meshing is globally disabled (see the Generate 3-D Cartesian Mesh tool). This means that,
regardless of any local settings, no boundary layers will be generated from any surface. However, if you globally
enable boundary layer meshing, then by default boundary layers will be generated off all geometry surfaces but
not from bounding box surfaces. If you wish to locally disable boundary layer meshing from geometry surfaces, or
to locally enable boundary layer meshing from bounding box surfaces, you can use this option.

Boundary Layer Constraint (bounding box surfaces only)


This option allows you to use a bounding box surface to constrain boundary layer growth from adjacent geometric
or bounding box surfaces. In such cases, the boundary layers at the adjacency will be projected onto the
constraining surface. By default, this option is disabled, which indicates that the boundary layers at the adjacency
will be joined with the boundary layers of the adjacent surface, or pinched off if boundary layers are not being
generated on the adjacent surface. Note that if you enable both boundary layer growth and boundary layer
constraint for a surface, boundary layer constraint takes precedence. Note also that this option is ignored during
mesh generation if boundary layer meshing is not globally enabled (see Generate 3-D Cartesian Mesh tool).

333
CFD-GEOM V2014.0 User Manual

Bodyfit Factor (geometric surfaces only)


This option locally controls the bodyfit factor of the selected surfaces during projected single-domain meshing. The
bodyfit factor controls the amount of effort the meshing algorithm expends to project near geometry mesh nodes
onto the geometry. A value of 100% means that nodes will be placed exactly on the geometry. Smaller values allow
the mesher more freedom to place these nodes slightly away from the geometry. Though this results in a lower
fidelity mesh, it can sometimes be useful in attaining higher mesh quality. By default, surfaces use the global
bodyfit setting specified in the Generate 3-D Cartesian Mesh tool.

Local Curvature Refinement (geometric surfaces only)


This option allows you to locally control refinement in regions with sharp edges or high curvature. Refinement
Factor is the ratio of the specified surface cell size to the final cell size. In other words, the higher the value the
more intense is the refinement around sharp edges and other regions of high curvature. The Feature Angle
indicates that additional refinement will be performed where curvature on the selected surfaces exceeds this
angle. The default for both options is to use the global settings specified in the Generate 3-D Cartesian Mesh tool.

Feature Preservation (geometric surfaces only)


If this option is checked, the mesh generator will try to capture sharp features locally on the selected surfaces.
Note that the capturing of features may not be 100% successful. Also, this operation is computationally expensive.
The default action is to use the global setting specified in the Generate 3-D Cartesian Mesh tool.

Outline Preservation (geometric surfaces only)


This option enables users to capture explicit boundaries (boundary between adjoining surfaces) as well as implicit
boundaries (intersection of overlapping parts, etc.) locally on the selected surfaces. Note that this option is
especially useful when it comes to capturing the boundary between adjoining coplanar patches. Such boundaries
are invisible to the above mentioned Feature Preservation algorithm since the dihedral angle is 0 in this situation.
Note that free boundaries and very small features may not be captured very well. The default action is to use the
global setting specified in the Generate 3-D Cartesian Mesh tool. Note also that this setting is used only during
projected single-domain meshing and is otherwise ignored.

The Surface Browser


This browser lists all existing geometry surfaces or the 6 bounding box surfaces, depending on the current picking
mode. When selecting a geometric surface, you may use this browser, the viewer, or the model tree. When
selecting a bounding box surface, you must use this browser to do so. Note that there is an invisible resize handle
located immediately above this browser.

Generate 3-D Cartesian Mesh


The Generate 3-D Cartesian Mesh tool is the primary mechanism for setting global Cartesian meshing parameters
and generating the mesh.

334
Mesh Tab

Generate a 3-D intersecting multi-domain Cartesian mesh


1. Create or import a 3-D surface geometry.
2. Create a Cartesian bounding box using the Define Cartesian Bounding Box tool.

Note If you enter the Generate 3-D Cartesian Mesh tool without having defined a bounding box, a
bounding box with default parameters will automatically be generated. This will also create a default
Cartesian domain marker, which will usually lie between the bounding box and the geometry.

3. (optional) Define any additional Cartesian domain markers using the Define Cartesian Domain Markers
tool.
4. (optional) Define any sources using the Define Cartesian Mesh Sources tool in the Cartesian Meshing
toolbox.
5. (optional) Set any local meshing parameters in the Set Cartesian Patch Info tool.
6. Open the Generate 3-D Cartesian Mesh tool and select Multi Domain as the mesh type.
7. Change other mesh properties as necessary.
8. Click Generate Mesh or press the middle mouse button to apply the settings and generate the mesh.
Alternatively, you can click Apply Settings to make the changes permanent without generating the mesh.

Generate a 3-D projected single-domain Cartesian mesh


1. Create or import a 3-D surface geometry.
2. Create a Cartesian bounding box using the Define Cartesian Bounding Box tool.

Note If you enter the Generate 3-D Cartesian Mesh tool without having defined a bounding box, a
bounding box with default parameters will automatically be generated. This will also create a default
Cartesian domain marker, which will usually lie between the bounding box and the geometry.

3. (optional) If the current Cartesian domain marker is not in the required location, relocate it using the
Define Cartesian Domain Markers tool.
4. (optional) Define any sources using the Define Cartesian Mesh Sources tool in the Cartesian Meshing
toolbox.
5. (optional) Set any local meshing parameters in the Set Cartesian Patch Info tool.
6. Open the Generate 3-D Cartesian Mesh tool and select Projected Single Domain as the mesh type.

Note If this option is not available, it indicates that you do not have any domain markers or you have
more than one. Add or delete domain markers as necessary.

7. Change other mesh properties as necessary.


8. Click Generate Mesh or press the middle mouse button to apply the settings and generate the mesh.
Alternatively, you can click Apply Settings to make the changes permanent without generating the mesh.

335
CFD-GEOM V2014.0 User Manual

3D Mesh Panel - Projected Single Domain

Each of the available meshing parameters is described below. Some options are available only for multi-domain
meshing, while others are available only for single-domain projected meshing. These are noted where differences
exist. Note also that some of these parameters can be locally overridden in the Set Cartesian Patch Info tool. These
are noted where appropriate.

336
Mesh Tab

Mesh Type
This option specifies the type of meshing algorithm to use. There are two types. The single-domain projected
meshing algorithm uses a projection algorithm to shrink-wrap nodes near the geometry onto the geometry. This
algorithm is available only for meshing a single domain. The multi-domain intersecting meshing algorithm uses a
combination of node movement and cell splitting to fit near-geometry cells to the geometry. This algorithm is
available for both single- and multi-domain meshing needs. In other words, it can be used to mesh inside the
geometry, between the geometry and the bounding box, or both. In CFD-GEOM, this is the default meshing
algorithm. For more information, see Set Cartesian Patch Info.

Tree Type
This specifies the type of tree to use during meshing. There are two types—omnitree (the default) and octree.
Ordinarily, you will not need to change this setting. For more information on omnitrees and octrees, see Omnitree
and Octree Splitting.

Automatically Generate Domain Markers (multi-domain only)


When using this option, the mesher will automatically identify logical sub volumes and generate domain markers
for you. It will only generate domain markers in those regions where a domain marker has not already been
defined.

Minimum Division Level


These parameters specify the minimum number of divisions to perform. At the beginning of meshing, the mesher
will recursively split the bounding box into a minimum number of cells before refining around surfaces. For
example, if the bounding box has an X dimension of 1 (dx=1) and you specify a minimum X division level of 4, the
bounding box will be split once in the X direction (level1). The resulting cells will be recursively split 3 more times.
The resulting cell sizes in the X direction are computed as dx/(2^X_level)—in this example, 0.0625. For each
direction, a menu of valid level values is shown. To the side of each is the actual cell size corresponding to that
level.

Surface Refinement
This option specifies the global cell size method to use when refining around surfaces. Division Levels instructs the
mesher to use specified level numbers in the X, Y, and Z directions. Normal and Tangential instructs the mesher
to use the specified normal and tangential cell sizes. These settings will apply to all geometry surfaces, except
bounding box surfaces, unless locally overridden in the Set Cartesian Patch Info tool. Note also that other settings
can influence cell sizes at the surfaces.

Bodyfit Factor (projected single-domain meshing only)


This option globally controls the bodyfit factor during projected single-domain meshing. The bodyfit factor controls
the amount of effort the meshing algorithm expends to project near geometry mesh nodes onto the geometry. A
value of 100% means that the mesher will attempt to place nodes exactly on the geometry. Smaller values allow

337
CFD-GEOM V2014.0 User Manual

the mesher more freedom to place these nodes slightly away from the geometry. Though this results in a lower
fidelity mesh, it can sometimes be useful in attaining higher mesh quality. By default, surfaces use this global
bodyfit setting unless locally overridden in the Set Cartesian Patch Info tool.

Boundary Layer Options


These options allow you to control boundary layer meshing. In the Cartesian meshing algorithms, boundary layers
are inserted after all other refinements have taken place. Two factors determine whether boundary layers will be
generated. First, the Activate Boundary Layer option in this tool globally enables boundary layer meshing. Unless
this option is checked, boundary layers will not be generated anywhere, regardless of local settings. Second, the
local setting for each surface is examined. By default, it is enabled for geometry surfaces and disabled for bounding
box surfaces. To locally enable/disable boundary layer meshing, see the Set Cartesian Patch Info tool.

When boundary layers are enabled, there are two methods for controlling boundary layer growth. Using the
Absolute Thickness option, you can specify the exact desired thickness of the first boundary layer. The first layer
thickness remains constant on all the surfaces irrespective of any variation in the surface mesh size. The Growth
Factor and Number of Layers parameters further specify how the boundary layers are generated. The Allowable
Total Thickness field shows the estimated allowable total thickness based on various settings such as the surface
refinement settings described above. The Actual Total Thickness field shows the total boundary layer thickness
based upon the specified first layer thickness, growth factor, and number of layers. Because of current limitations,
you should try to specify parameters that keep the actual thickness below the estimated allowable thickness.
Failure to do this may result in cells with negative volumes. This may be remedied in a future release. Note that, if
you change other meshing parameters that affect the amount of surface refinement, you should recheck your
boundary layer parameters to make sure that the actual thickness is still less than the allowable thickness. The
following figure shows a planar cut of a mesh with constant thickness boundary layers. Note how the boundary
layers grown from surface D have the same thickness as those grown from surface A, even though the surface
mesh sizes differ.

Planar Cut of a Mesh with Constant Thickness Boundary Layers

The second method for controlling boundary layer growth uses the Local Relative Thickness option. Here, the first
layer thickness is specified as a function of local surface mesh size. This means that the absolute thickness may

338
Mesh Tab

vary across surfaces. The Growth Factor and Number of Layers settings have the same meaning as with the
constant thickness option. With the Local Relative Thickness option, the first layer thickness is a dimensionless
quantity, and, hence, so are the allowable and actual thickness values. The allowable thickness is always near 1, so
you should try to set boundary layer parameters that keep the actual total thickness below this value. The
following figure shows a planar cut of a mesh employing variable thickness boundary layers. Note how the layers
grown from surface D vary with the local surface mesh size.

Planar cut of a Mesh Employing Variable Thickness Boundary Layers

Number of Cartesian Layers


This setting controls the number of Cartesian layers to generate around the surface geometry. For example, if the
local surface mesh size is x and you specify three Cartesian layers, then three layers of Cartesian cells of this size
will be grown away from the geometry in the vicinity. After this, the mesher is free to coarsen the mesh as needed.
Note that this option should not be confused with boundary layers. The default value for this option is 0.

Minimal number of layers at each refinement level


With this option, the user can specify the minimum number of Cartesian cell layers that need to be generated at
each refinement level. The default value is 1. The larger this integer value, the slower the transition from dense to
coarser mesh. In general if a smoother mesh is needed, the value should be greater than 2. But increasing the
value will increase the overall cell count significantly. Thus, an optimal value needs to be chosen considering the
pros (smoother mesh) and cons (increase in number of cells).

339
CFD-GEOM V2014.0 User Manual

Curvature Refinement
This option allows you to globally control refinement in regions with sharp edges or high curvature. Refinement
Factor is the ratio of the specified surface cell size to the final cell size. In other words, the higher the value the
more intense is the refinement around sharp edges and other regions of high curvature. The default value is 1.4.
The Feature Angle indicates that additional refinement will be performed where curvature on the selected surfaces
exceeds this angle. The default is 35 degrees. These options can be locally overridden in the Set Cartesian Patch
Info tool.

Feature Preservation
If this option is checked, the mesh generator will try to capture sharp features in the geometry globally. Note that
the capturing of features may not be 100% successful. Also, this operation is computationally expensive. This
option can be locally overridden in the Set Cartesian Patch Info tool.

Outline Preservation (projected single-domain meshing only)


This option enables users to capture explicit boundaries (boundary between adjoining patches) as well as implicit
boundaries (intersection of overlapping parts, etc.). Note that this option is especially useful when it comes to
capturing the boundary between adjoining coplanar patches. Such boundaries are invisible to the above
mentioned Preserve Features algorithm since the dihedral angle is 0 in this situation. Note that free boundaries
and very small features may not be captured very well. This option can be locally overridden in the Set Cartesian
Patch Info tool.

Smooth Interior Nodes


If this option is checked, interior nodes will be smoothed with a face-area weighted Laplacian smoothing method.
Note that, here, interior nodes are those nodes between the boundary and Cartesian cells. By default this option is
unchecked. Smoothing interior nodes could improve mesh quality in some cases.

Smooth Boundary Nodes (projected single-domain meshing only)


If this option is checked, the boundary nodes will be smoothed with a face-area weighted Laplacian smoothing
method. Smoothing boundary nodes tends to generate better quality cells, but the nodes may not lie exactly on
the geometry and thus sharp features may be washed out. By default this option is unchecked.

Filament Options

Filament Options
The Filament creation and editing tools enable you to create/edit filaments interactively for use in the CFD-ACE
solver (see the Filament Model chapter of the CFD-ACE+ User Manual). Within CFD-GEOM, filaments are created
from one or more structured edges. The edge grids govern the number and length of filament cells. You can specify

340
Mesh Tab

additional parameters to control global and local cell radii, the number of sides per cell, and the number of cell
groups in each filament.

The options for filaments, from right to left, are shown here:

Create Filaments

Edit Filaments

Filament Buttons

To use filaments effectively, there are a few facts you should remember:

• Filament entities can be created from one or more edges. It is not necessary for these edges to be
connected to each other.
• The number of filament side faces must be even, and at least four.
• The number of branches at a particular node within a single Filament entity may not exceed four.
• Filaments contain general polyhedral grids and are written to DTF as polyzones. Current limitations in DTF
do not allow you to update DTF files that contain polyzones; which means that when writing DTF files, a
fresh DTF file must always be written.
• Each filament entity will be written to a separate zone in the DTF file.
• If a filament entity is built from two or more edges, the Multi Domain option controls how the filament is
written to DTF:
• If selected, multiple cell groups will be written one for each constituent edge entity. All cells wrapped
around a particular edge will belong to the same cell group. This means that, in CFD-ACE-GUI, the cell
groups within a filament can be assigned separate volume conditions. Note also that no interior interfaces
are generated between cell groups.
• If not selected, all cells within a filament will belong to the same cell group. Hence, only one volume
condition may be assigned to them in CFD-ACE-GUI.
• Within a multi-edge filament, the grids at edge adjacencies will be fully connected. However, grids
between adjacent filament entities will not necessarily be connected.
• Large radius values (relative to cell length) at nodes where branching occurs can result in folded cells and
should be avoided.

Create Filaments
The Create Filaments tool enables you to create a basic filament.

Create Filament Button

341
CFD-GEOM V2014.0 User Manual

Filament Creation Panel

Create a filament
1. Click the Create Filament button in the Filaments toolbox. The Filament Creation panel appears and the
Status Line prompts you to select the edges to form a filament. If you select more than one edge, you may
also select the Multi Domain option.

2. Check the Multiple Volume Conditions box if you want to create a multi domain.

3. Specify the default radius in the Default Radius field.

4. Enter the number of sides for the filament in the Number of Sides field and click Apply or the middle
mouse button to create the filament. The radius value specified in this tool applies to the filament as a
whole. To locally control filament radius values, use the filament editing tool.

Edit Filaments
The Edit Filaments tool enables you to control the grid properties of existing filaments. Two basic types of control
are available:
• Global controls (the same as those available in the filament creation tool) enable you to modify the
number of side faces and default radius of a selected Filament entity.
• Local controls enable you to specify local radius values within a filament entity. Local filament radii can be
specified at any end points of the constituent edge entities. Local radii can be assigned only to the
endpoints of the underlying edge entities. If a local radius has not been specified at an edge end point, the
filament’s default radius is used at that point. The radii specified at an edge’s end points govern the radii
of the filament along the edge. If these radii are different, the interior filament radii are interpolated
between these end point radii.
In CFD-GEOM, certain filament-related capabilities are not yet available:
• Edges used in filament construction can not be split or joined.
• Filament editing operations cannot be undone/redone.
• Edges cannot be added to or removed from an existing filament.

342
Mesh Tab

Edit Filaments Button

Filament Editor Panel

Edit a filament
1. Click the Edit Filaments button in the Filaments toolbox. The Filament Editor panel appears and the Status
Line prompts you to select a filament for editing.

2. Select a filament and modify global properties if necessary..

3. Check the Multi Domain box if you want to create a multi domain.

4. Enter a default radius in the Default Radius field.

5. Enter the radius in the Radius field. If you want to assign local radius values, you must also select one or
more end points of the constituent edges. If you have not assigned a local radius at a point, a value of
minus one (-1) will appear in the Local Radius field. Otherwise, the local radius you specify for the most
recently picked point will appear. Additionally, a circle with that radius will be drawn at each selected
point. If you want to change the local radius, specify a positive value.

6. Enter the number of sides for the filament in the Number of Sides field.

7. Select the edges and click Apply or the middle mouse button to complete the selection and the filament
editing operation.

343
CFD-GEOM V2014.0 User Manual

Mesh Query Options

Query Options
The Mesh Query Options tools allow you to check the mesh quality of your model. There are checks for surface
and volume meshes, depending on the dimension. In this section, picking is restricted to the entity types relevant
to the particular check.

Any cells that violate the given criteria will be persistently displayed in the graphics window. Click the zoom button
to cycle through the cells violating the given criteria. Click the clear button to remove the bad cell display.
Alternatively, the display will be cleared on the next mesh query.

Mesh Query Options

2D Query Options
The 2D Mesh Query options allow you to check specific mesh quality statistics for a 2D mesh. To get a mesh
statistic, select a Structured Domain or Unstructured Domain and specify the threshold for the check, i.e. the
minimum volume.

2D Mesh Queries Button

344
Mesh Tab

2D Mesh Queries Panel

Volume Check The Volume Check applies to 2D blocks and 2D surface grids, all in a constant z
plane.
Folded Cells The Folded Cells, unlike the Volume Check tool, applies to all 2D blocks, faces and
unstructured surface meshes whether they are planar or non-planar. This tool will
detect and display overlapping cells.
Centroid/Face Angle (2D) The 2D check is handled similarly. Here, the cells are either triangles or quads and
faces that consist of the two-point segments that form these cells. In both cases,
you may specify a threshold angle in the Min. Angle field. When the check is
complete, the total number of faces, the number of faces that violate the
minimum angle threshold, and the worst angle are reported on the status line.
Any faces at which the threshold is violated are also drawn in the viewer. If the
Show Histogram option is specified before the check is initiated, a histogram is
also generated. Angular values range from 0 degrees (highly skewed) to 90
degrees (ideal).

2D Centroid Face Angle

Small Internal Angle The Small Internal Angle check tool computes the interior angle between the
edges of each cell and displays those cells that violate the specified minimum

345
CFD-GEOM V2014.0 User Manual

angle. This can be useful when the tetrahedral mesher complains about poor
interior angles.
Area The Area Check is the wetted surface area of structured and unstructured surface
grids.

3D Query Options
The 3D Mesh Query options allow you to check specific mesh quality statistics for a 2D mesh. To get a mesh
statistic, select a Structured Domain or Unstructured Domain and specify the threshold for the check, i.e. the
minimum volume.

3D Mesh Queries Button

3D Mesh Queries Panel

Volume Check (3D)


To use the Volume Check option, pick a set of structured domains, composite
blocks, unstructured domains, or semi-structured domains; enter the minimum
volume; and click the apply button to begin the volume calculations. If any
negative volumes exist, those cells will be highlighted in green.

Centroid/Face Angle (3D)


The Centroid/Face angle check describes an angular relationship between cells
that are particularly important to the CFD-ACEU and CFD_FASTRAN flow solvers.
The 3D variant of this check can be applied to one or more structured domains,

346
Mesh Tab

composite blocks, unstructured domains, and semi-structured domains.


Supported cell types include tetrahedra, pyramids, prisms, and hexahedra. The
2D variant can be applied to one or more 2D Blocks, Loops, or 2D unstructured
Domains. Supported cell types include triangles and quads. In the 3D check, all
selected structured and unstructured grids are treated as a single composite grid.
For all cells in the composite grid, all faces (triangles and/or quads) used in the
construction of these cells are collected. Depending upon the location of a face
within the composite grid, the centroid/face angle is calculated in one of two
ways:

For faces with a cell on only one side (i.e., the face lies on the boundary of the
composite grid), the angle is calculated by first calculating the vector between the
cell centroid and the face centroid. The centroid/face angle is the minimum angle
this vector makes with the face.

For faces with cells on both sides (i.e. the face lies in the interior of the composite
grid), the angle is calculated by first calculating the vector between the two cell
centroids. The centroid/face angle is the minimum angle between this vector and
the shared face.

Centroid Face Angle

Dihedral Angle (Tet)


Determines which tetrahedra have a dihedral angle (the angle between 2 faces)
less than the user-specified value. The number of offending tetrahedra and
pyramids are reported on the Status Line, and those cells are displayed in the
error color. Here, we have simulated an error by limiting the Min Angle check to
face angles of 20° (an unrealistically stringent requirement).

347
CFD-GEOM V2014.0 User Manual

Dihedral Angle

348
Chapter 10. BC/VC Tab

BC/VC Editor
Before a grid system can be handed to the flow solver, you must define boundary and volume conditions. This is
done using the BC/VC Editor. For a 2D system, the only entities that are available for boundary conditions are
edges and lines or curves that are part of a loop. For this reason it is often beneficial to restrict viewing to only
these types of entities. Use the Entity Bar to view them.

The main elements of the Boundary Condition (BC) Explorer and Volume Condition (VC) Explorer are described
below. The 2D and 3D radio buttons that are available for boundary conditions and volume conditions limit the
types of entities that can be selected during boundary or volume condition assignment. If you do not see the
condition types that you anticipate, check the default Flow Solver setting in Edit Menu-Preferences-Tools. The flow
solver you choose will determine the boundary and volume condition types that will be available for selection in
the BC/VC Editor.

BC/VC Tools

BC/VC Editor User Configuration


Boundary condition and volume condition types recognized by ACE and FASTRAN are hard-coded into GEOM.
There is currently no mechanism for saving customized boundary/volume condition types otherwise. Customizing
involves specifying the types of boundary or volume conditions present in the system, the color chosen to
represent those conditions and a set of valid sub-descriptors for each boundary and volume condition. Once the
file has been modified, the new sets of boundary and volume condition descriptors will be present at the
invocation of CFD-GEOM.

349
CFD-GEOM V2014.0 User Manual

BC/VC Editor User Configuration Panel

Boundary Condition Editor


Faces, surfaces, and external surface patches (obtained from external grid files) may be selected for boundary
conditions if you are creating a 3D geometry. For 2D geometries, boundary conditions can be set on edges, lines,
and curves that are part of a surface.

To facilitate grouping of identical boundary condition entities within a DTF file, a mechanism to group these
entities has been added to allow easier manipulation of complex models downstream in other applications such as
CFD-ACE-GUI and CFD-VIEW. The grouping operations allow adding entities to a group (creates a group if
necessary), remove entities from a group (removes group if it become empty), renaming groups, or changing the
BC type of a group. All grouped entities must have the same BC type.

350
BC/VC Tab

Boundary Condition Editor Panel

Boundary Condition Columns


Name The Name column enables you to give unique names to each boundary condition. This often helps
when trying to locate a certain boundary condition.
Type The Boundary Condition Type (BC Type) specifies the type of boundary condition. BC types include:

351
CFD-GEOM V2014.0 User Manual

Inlet, Outlet, Wall, Symmetry, and Rotating Wall.


Group Group column identifies which group the entity belongs to, if any.
Entity The Entity Type column gives identification information about the boundary conditions.
Type/Key Specifically, the Zone (domain) that the boundary condition is contained in, and the Key (which is a
unique identifier assigned to the entity during the grid generation process). There is no way to
change any of this information and it is provided mainly for sorting and debugging purposes.

Boundary Condition Buttons


Type Enables you to choose a boundary type from the drop-down menu.
Name Enables you to choose a boundary condition name from the drop-down menu.
Apply Applies the boundary condition to the specified model.
Cancel Cancels the operation.
Refresh Updates the viewing area of the BC editor.
Grouping Buttons
Add To Group Create a group or add new entities to an existing group.
Remove From Remove selected entities from group.
Group
Select All in Select all entities in the specified group.
Group
Rename Group Rename the group.
AutoName
Automatically name and group BCs based on the surrounding VC names.

If the model is 3-D, any surfaces and structured face entities will be named based on the names of the
unstructured domains, structured domains, semi-structured domains, and Cartesian domain markers
they bound.

If the model is 2-D, any lines, curves, edges, and composite edges will be named based on the names
of the surfaces and structured face entities that use them.

Use the AutoName Feature

1. Assign names to all volumes . Recall that, unless specifically named, volumes get the default name
"NoName".

2. Set any BC TYPES that require special consideration.

For example, you may want to specify inlets and outlets at this time.

352
BC/VC Tab

3. When you click AutoName , it automatically names BCs based on the following rules (using example
VC names):

a. A BC lying between two VCs named "VC1" and "VC2" will be named "VC1-VC2".

It will be added to a BC group with the same name.

b. A BC bounding only one VC will be named based on the VC name and the BC type.

For example, if the VC name is "VC1" and the BC has been tagged as an inlet, then the BC name
will be "VC1-Inlet". It will be added to a BC group with the same name.

c. A BC lying in the interior of a volume (i.e., a baffle/thin wall) with name "VC1" will be named
"VC1-Thin_wall". It will be added to a BC group with the same name.

4. If you wish to manually specify any BC's, do so now.

Notes

Use the AutoName button with caution. Any previously assigned BC names may be overwritten.

When the word "Default" appears as a BC type or in a BC name (as shown in the browser), it will be converted
appropriately during DTF output. Suppose, for example, that you have a surface with a Default BC type and the
name "VC1-Default". During DTF output, the BC type will be written as "Wall" and the name will be written "VC1-
Wall". Similarly, if the surface lies at an interface, a Default BC type will be written as an "Interface".

Volume Condition Editor


The volume condition explorer is similar to the boundary condition explorer except that it displays information
related to the volume condition. The first three elements of the volume condition explorer (Name, Type, and
Material) give identity information about the volume condition. All of these settings can be made in CFD-GEOM.
structured domains, unstructured domains, and semi-structured domains may be selected for volume conditions,
if you are creating a 3D geometry. For 2D geometries, faces, surfaces, and external surface patches (from external
grid files) may be selected for volume conditions. By default, all volume conditions are considered to be of fluid
type.

To facilitate grouping of identical volume condition entities within a DTF file, a mechanism to group these entities
has been added to allow easier manipulation of complex models downstream in other applications such as CFD-
ACE-GUI and CFD-VIEW. The grouping operations allow adding entities to a group (creates a group if necessary),
remove entities from a group (removes group if it become empty), renaming groups, or changing the BC type of a
group. All grouped entities must have the same VC type.

353
CFD-GEOM V2014.0 User Manual

Volume Condition Editor Panel

Volume Condition Columns


Name The Name column enables you to give unique names to each volume condition. This often helps
when trying to locate a certain volume condition.
Type VC Type specifies whether the volume condition is of fluid, solid, or blocked type.
Group Group column identifies which group the entity belongs to, if any.
Entity The Entity Type column gives identification information about the volume conditions. The Zone
Type/Key (domain) that the volume condition is contained, and the Key (which is a unique identifier assigned
to the entity during the grid generation process). There is no way to change any of this information
and it is provided mainly for sorting and debugging purposes.

354
BC/VC Tab

Volume Condition Buttons


Name Enables you to choose a volume condition name from the drop-down menu.
Apply Applies the volume condition to the specified model.
Cancel Cancels the operation.
Refresh Updates the viewing area of the VC editor.
Grouping Buttons
Add To Group Create a group or add new entities to an existing group.
Remove From Remove selected entities from group.
Group
Select All in Group Select all entities in the specified group.
Rename Group Rename the group.

BC/VC Queries

BC/VC Queries Panel

355
Chapter 11. CFD-GEOM Scripting

Introduction to CFD-GEOM Scripting

Overview
The CFD-GEOM scripting interface offers an alternative to interacting with the CFD-GEOM graphical user interface
(GUI). It allows you to programmatically construct models, vary parameters for parametric studies, perform mesh
generation, output geometry/mesh files, and construct custom GUIs for your specific application type. This
interface provides a set of API (application programmer interface) functions that are built upon the Python
programming language. CFD-GEOM scripts are themselves written in the Python language, and make use of the
API provided in the CFD-GEOM script language modules. Such scripts can be run from within CFD-GEOM itself,
Simulation Manager, and other applications including a standalone Python interpreter. Via its journaling capability,
you can interactively work with CFD-GEOM and let it generate your scripts for you—which can be tweaked and
tailored for parametric variations. This document introduces the basics of CFD-GEOM scripting and also discusses
several advanced scripting methods.

CFD-GEOM SCRIPTING FUNDAMENTALS

To take advantage of CFD-GEOM’s scripting capabilities, you do not need to be a Python expert. However, you
should have a basic understanding of the following Python topics:

• Importing and using modules

• Basic Python data types including lists ( []’s ) and dictionaries ( {}’s )

• The PYTHONPATH environment variable

THE SCRIPTING TOOLBAR

The scripting toolbar contains 3 buttons for simplifying the scripting/journaling process. The first button “Reload
Script” reruns the current script. For example, suppose that the current model was read from a script, and that
you’ve subsequently modified the script. Pressing the “Reload Script” button will clear the current model and
reload it from the modified script. The “Edit Script” button displays that script in the text editor you’ve specified
under Edit->Preferences->Tools. The “Deactivate Journaling” button disables journaling for the current model.
Note that, if you press this button, you will not be able to reactivate journaling for this model in the current CFD-
th
GEOM session. Note that a 4 button “Execute Macro” is also located on the scripting toolbar. More information
on this button can be found under Script_ExecuteMacro.

This section is not intended to be a tutorial on general Python usage. General Python documentation and tutorials
can be found at www.python.org. Instead, this section will discuss the fundamentals of CFD-GEOM scripting. The
following is a table of contents for this section:

Running CFD-GEOM Scripts in CFD-GEOM


Creating CFD-GEOM Scripts
Importing and Using CFD-GEOM Modules

357
CFD-GEOM V2014.0 User Manual

Entities and Entity Dictionaries


Name Assignment
Journaling
The Scripting Toolbar
Running CFD-GEOM Scripts in Other Applications

Running CFD-GEOM Scripts in CFD-GEOM


Within CFD-GEOM, you can run scripts in one of 4 ways:

• From the File->Open panel

• From the list of most recent files in the File Menu

• Via the “Reload Script” button on the scripting toolbar (if the current model was read from a script)

• Via the “-script” option at the command line

Error messages and output from print statements can be viewed in the Script Output Window (located under
View->Script Output). Behind the scenes, when CFD-GEOM runs a script, it redirects Python output to a file with
the name geom_script_<modelname>.out. This file is located in the “Temporary Files Directory” specified under
Edit->Preferences->Files. You can view its contents in your favorite text editor. Note, however, that if you run CFD-
GEOM with the “-script” option (which runs the script without creating the CFD-GEOM graphical user interface),
the script output file is placed in the same directory as the script itself rather than the “Temporary Files Directory.

Creating CFD-GEOM Scripts


CFD-GEOM scripts are Python scripts that use the CFD-GEOM scripting modules and commands. They are text files
and must have a .py extension. You can create them manually in your favorite text editor, let CFD-GEOM create
them for you via its journaling system, or a combination of both.

Importing and Using CFD-GEOM Modules


Aside from basic Python language constructs such as mathematical operators, “for” loops, “if” statements, etc.,
most of the capabilities you need for CFD-GEOM scripting come from imported modules. Some modules such as
“math” (which provides numerical constants, trigonometric functions, etc.) are provided with most Python
distributions. CFD-GEOM provides its own set of modules containing functions for modeling, meshing, file I/O, etc.
You can even write your own modules. In any case, most Python modules are located in files with a .py extension.
To use the capabilities provided by a module, you must import that module. Most CFD-GEOM scripts will typically
contain at least the following import statements:

import math
import GUtils
import GGeometry
import GMesh
import GFileIO
import GBCVC

358
CFD-GEOM Scripting

To use a function in a particular module, you must usually qualify the function name with the module from which it
came. For example, to create a point, you would typically do something like the following:

p1 = GGeometry.CreatePoint(0,0,0)

There are other mechanisms for importing files that make it unnecessary to qualify a function name with a module
name. These more advanced import mechanisms are discussed at www.python.org.

CFD-GEOM provides the following user modules:

• GGeometry: defines all geometry creation/manipulation API and transforms such as translation, scaling,
etc. that can be applied to every entity type.

• GMesh: defines all meshing API for structured, semi-structured, unstructured, and poly meshing

• GFileIO: defines all API for geometry/mesh file I/O

• GBCVC: defines all API for performing simple boundary and volume condition assignment

• GUtils: defines API for miscellaneous tasks such as creating/modifying levels and user variables, deleting
entities, undo/redo, etc.

• GViz: defines API for setting entity colors. This module currently provides very limited functionality, but
new capabilities for controlling CFD-GEOM visualization will be introduced in a later release.

• CFDForm: defines all API for constructing custom graphical user interfaces.

CFD-GEOM also provides several system modules that provide core support for the user modules (you should
never need to import system modules into your scripts):

• GInternal: defines API used internally by the CFD-GEOM scripting language, and which are not intended
for general usage.

• su_modeler_py: defines API used internally by the CFD-GEOM scripting language, and which are not
intended for general usage.

• cfdpyform: defines API used internally by the CFDForm module, and which are not intended for general
usage.

• _su_modeler_py.pyd (MS-Windows DLL) or _su_modeler_py.so (shared object for all other UNIX):
libraries needed to run CFD-GEOM scripts from applications other than CFD-GEOM.

• _cfdpyform.pyd (MS-Windows DLL) or _cfdpyform.so (all other UNIX); libraries providing the core
functionality for the CFDForm module. These are needed whether you are constructing forms in CFD-
GEOM or elsewhere.

The documentation for the functions in each user module are provided in the following links:

GGeometry - Point, Line, Conics, etc.

GMesh - Edge, Structured, Unstructured, etc.

GFileIO

359
CFD-GEOM V2014.0 User Manual

GBCVC

GUtils

GViz

CFDForm

Entities and Entity Dictionaries


Regardless of the complexity of the operation, every CFD-GEOM script language function that creates entities
returns them through an entity dictionary. This section will discuss entity dictionaries and how to use them.
The general form for any CFD-GEOM function that creates and returns entities is
return_value = function_name( args )

Functions that create entities must return handles to those entities to the Python namespace so that those entities
can be used in subsequent function calls. CFD-GEOM script functions that create and return entities fall into 4
general categories.

• Functions designed to create and return exactly one entity (e.g. CreatePoint())
• Functions designed to create 1 or more entities of a particular type but that do not create other entities
as side effects (e.g. CreateLines())
• Functions designed to create 1 or more entities of a particular type and that also create other entities as
side effects (e.g. CreateExtrudedSurfaces())
• Functions designed to create 1 or more entities of multiple types and that may or may not also create
entities as side effects (e.g. TranslateEntities() with the “duplicate” option)

To accommodate those functions that must create and return multiple entities to the Python namespace, it is
necessary to use an aggregate data structure capable of storing multiple entities. The CFD-GEOM entity dictionary
serves this purpose.

A Python dictionary (often called an associative array in other programming languages) is a way of associating data
with fixed keys, which are usually strings or integers. In the case of a CFD-GEOM entity dictionary, the keys are
entity type strings, and the associated data are lists of entities of a single type. When returning entities during a
script run, CFD-GEOM script functions construct an entity dictionary containing all the entities created by the
function.

Each dictionary contains the following named lists, each of which is a Python list:

• ‘points’ (points)
• ‘lines’ (lines)
• ‘curves’ (curves)
• ‘edges’ (edges)
• ‘cedges’ (composite edges)
• ‘edge_link_groups’ (edge link groups)
• ‘loops’ (loops; note that you should not normally need to access these)
• ‘usurfs’ (untrimmed surfaces)
• ‘surfs’ (surfaces)
• ‘dsurfs’ (discrete surfaces)

360
CFD-GEOM Scripting

• ‘faces’ (faces)
• ‘2d_sdomains’ (2-D structured domains; i.e. 2-D blocks)
• ‘sdomains’ (3-D structured domains; i.e. blocks)
• ‘csdomains’ (3-D composite structured domains; i.e. composite blocks)
• ‘shells’ (shells; i.e. closed surface sets)
• ‘udomains’ (unstructured domains)
• ‘ssdomains’ (semi-structured domains)
• ‘filaments’ (filaments)

Each list contains 0 or more entity instances. An entity instance is essentially a pointer (handle) to a single entity. In
many cases, entity dictionaries and entity instances can be used interchangeably as input to CFD-GEOM script
functions. Exceptions to this are described a little later.

In order to understand the distinction between entity instances and entity dictionaries, and to use them
appropriately, it is useful to understand how the CFD-GEOM script language constructs entity dictionaries. Let’s
consider the simplest example.

p1 = GGeometry.CreatePoint(0,0,0)
print p1

In this case, we’ve called a function that never creates more than one entity. Here CFD-GEOM creates a point
entity and assigns it to a dictionary whose name is p1, whose contents are listed below (this output has been
reformatted to make it more easily readable):

{
0: <C SUPoint instance at _2874b308_p_SUPoint>,
'points': [<C SUPoint instance at _2874b308_p_SUPoint>],
'udomains': [],
'cedges': [],
'shells': [],
'csdomains': [],
'counter': 1,
'lines': [],
'curves': [],
'ssdomains': [],
'edge_link_groups': [],
'edges': [],
'sdomains': [],
'faces': [],
'loops': [],
'usurfs': [],
'2d_sdomains': [],
'surfs': [],
'filaments': []
}

During the execution of CreatePoint(), a single point entity was created and a handle to it is stored in the ‘points’
list of the dictionary p1. To access this handle, known as an entity instance, you can use p1[‘points’][0]. In addition,
because this function is designed to create exactly 1 entity of a particular type, the returned entity is known as a
primary entity. When a primary entity is created, it gets special treatment when added to an entity dictionary.
Dictionaries that contain a primary entity have a special key “0” and an associated handle to the entity. Note in the
above output that the primary entity and the point in the ‘points’ list have the same handle, and hence refer to the
same entity.

361
CFD-GEOM V2014.0 User Manual

Note The handles are special constructs created by Python that associate the point in the Python namespace with
the underlying CFD-GEOM point. Their string values are based on memory locations and vary from script run to
script run. The string values are not important and should not be used directly in your scripts.)

To use the point as an argument in another function call, you can use either its dictionary or instance name. Hence
(assuming there exists a point named p2) the following are equally valid:

line = GGeometry.CreateLine(p1, p2)


line = GGeometry.CreateLine(p1[‘points’][0], p2)

The reason is that CFD-GEOM script functions that accept entities as input know how to distinguish between entity
instances and dictionaries, and will extract the primary entity from a dictionary when necessary. Let’s now
consider another simple example. Suppose that you create 3 points p1, p2, and p3—and that you create 2 lines
simultaneously from those points.

p1 = GGeometry.CreatePoint(0,0,0)
p2 = GGeometry.CreatePoint(1,0,0)
p3 = GGeometry.CreatePoint(2,0,0)
lines = GGeometry.CreateLines([p1,p2,p3])
print lines

In this case, the goal was to create a specific type of entity (line). However, because more than one of them was
created, there is no primary entity, as shown in the following output:

{
'udomains': [],
'cedges': [],
'shells': [],
'csdomains': [],
'lines': [<C SULine instance at _586aab08_p_SULine>,
<C SULine instance at _208fb608_p_SULine>],
'curves': [],
'ssdomains': [],
'edge_link_groups': [],
'edges': [],
'sdomains': [],
'faces': [],
'loops': [],
'usurfs': [],
'2d_sdomains': [],
'surfs': [],
'filaments': [],
'points': []
}

As usual, handles to the newly created lines are added to the ‘lines’ list. However, because there is no primary
entity, the lines dictionary can not be used as an argument to functions that take line entities as input. For
example, if you want to extrude a single surface from one of the lines, you must issue a command similar to the
following (note that CreateExtrudedSurfaces takes a line/curve or a list of lines/curves as its first argument):

srf = GGeometry.CreateExtrudedSurfaces(lines[‘lines’][0], 0,1,0, 1,1)

If you want to extrude 2 surfaces (1 from each line),

srfs = GGeometry.CreateExtrudedSurfaces(lines, 0,1,0, 1,1)

362
CFD-GEOM Scripting

will not work. Instead, you would need to do

srfs = GGeometry.CreateExtrudedSurfaces(lines[‘lines’], 0,1,0, 1,1)

or

srfs = GGeometry.CreateExtrudedSurfaces([lines[‘lines’][0], lines[‘lines’][1]], 0,1,0,


1,1)

Now let’s consider a more complicated example. Suppose that you execute the following:

p1 = GGeometry.CreatePoint(0,0,0)
p2 = GGeometry.CreatePoint(1,0,0)
p3 = GGeometry.CreatePoint(2,0,0)
lines = GGeometry.CreateLines([p1,p2,p3])
srf = GGeometry.CreateExtrudedSurfaces(lines[‘lines’][0], 0,1,0, 1,1)
print srf

The output is as follows:

{
0: <C SUTrimmedSurface instance at _f06eb208_p_SUTrimmedSurface>,
'udomains': [],
'cedges': [],
'shells': [],
'csdomains': [],
'lines': [<C SULine instance at _f8cd380b_p_SULine>,
<C SULine instance at _68922b0b_p_SULine>,
<C SULine instance at _18ff020c_p_SULine>],
'curves': [],
'ssdomains': [],
'edge_link_groups': [],
'edges': [],
'sdomains': [],
'faces': [],
'loops': [<C SULoop instance at _f8f5b108_p_SULoop>],
'usurfs': [<C SUUntrimmedSurface instance
at_6889fc0b_p_SUUntrimmedSurface>],
'2d_sdomains': [],
'surfs': [<C SUTrimmedSurface instance at
_f06eb208_p_SUTrimmedSurface>],
'filaments': [],
'points': [<C SUPoint instance at _6886b508_p_SUPoint>,
<C SUPoint instance at _d0e4b408_p_SUPoint>]
}

Because the purpose of this function is to create a surface, and exactly one surface was created, that surface is the
primary entity and is located at key “0”. As usual, it is also stored in the ‘surfs’ list. However, to create this surface,
CFD-GEOM has to construct several additional entities (3 lines, 1 loop, 1 untrimmed surface, and 2 points). Because
these entities are created as side effects of the surface creation, and because you may later wish to use these
entities in other function calls, CFD-GEOM adds these entities to the dictionary. Hence, to use the surface in a
function call, you may specify srf or srf[‘surfs’][0]. To use one of the other entities, you must specify the instance
name srf[listname][index].

Consider one final entity referencing example. Suppose that you create a point and attempt to create another
point at the same location.

p1 = GGeometry.CreatePoint(0,0,0)
p2 = GGeometry.CreatePoint(0,0,0)

363
CFD-GEOM V2014.0 User Manual

print p1
print p2

The output for p1 is as follows:

{
0: <C SUPoint instance at _0856210b_p_SUPoint>,
'udomains': [],
'cedges': [],
'shells': [],
'csdomains': [],
'lines': [],
'curves': [],
'ssdomains': [],
'edge_link_groups': [],
'edges': [],
'sdomains': [],
'faces': [],
'loops': [],
'usurfs': [],
'2d_sdomains': [],
'surfs': [],
'filaments': [],
'points': [<C SUPoint instance at _0856210b_p_SUPoint>]
}

and the output for p2 is

{
0: <C SUPoint instance at _0856210b_p_SUPoint>,
'udomains': [],
'cedges': [],
'shells': [],
'csdomains': [],
'lines': [],
'curves': [],
'ssdomains': [],
'edge_link_groups': [],
'edges': [],
'sdomains': [],
'faces': [],
'loops': [],
'usurfs': [],
'2d_sdomains': [],
'surfs': [],
'filaments': [],
'points': []
}

In the output for p1, the new point is stored in the ‘points’ list and as the primary entity. In p2, the point is stored
as the primary entity, but is not stored in the ‘points’ list. The reason is that, when creating p2, a new point was
not actually created. Rather, the existing point at location (0,0,0) was returned. Notice how the handle to the point
in the p2 dictionary is identical to the handles in the p1 dictionary. In the end, the point has the following names:
p1, p1[‘points’][0], and p2.

Name Assignment
Names can be assigned to entities at times other than creation time. Consider the following example:

364
CFD-GEOM Scripting

p1 = GGeometry.CreatePoint(0,0,0)
p2 = p1

In this example, the entity dictionary p1 is created. Prior to the assignment to p2, the point can be referenced via
p1 or p1[‘points’][0]. Upon assignment to p2, the point can be referenced by 2 additional names: p2 and
p2[‘points’][0]. The reason is that the assignment p2 = p1 gives p2 a reference to the dictionary referenced by p1
(as of Python 2.4.2, p1 and p2 would point to the same dictionary rather than 2 distinct copies).

Consider a similar example:

p1 = GGeometry.CreatePoint(0,0,0)
p2 = p1[‘points’][0]

As usual, the new point can be referenced by the names p1 and p1[‘points’][0]. After the assignment to p2, the
new point can also be referenced as p2. This example is different from the previous example in that a point
instance, rather than a dictionary, is assigned to p2.

Suppose that you create a point but do not assign it to a variable.

GGeometry.CreatePoint(0,0,0)

In this case, the newly created point will be inaccessible because no assignment has added it to the Python
namespace. In a similar example, suppose that you write your own function to create a set of points.

def CreateSomePoints() :
pts = [] # Creates an empty list
for i in range(0,5) :
pts.append(GGeometry.CreatePoint(i,0,0))
CreateSomePoints()

None of the newly created points will be accessible. The reason is that, though they were added to a local list in
the function, they were never returned to the global namespace. You can remedy this problem by both returning
the points from the function and assigning the returned points to a list similar to the following:

def CreateSomePoints() :
pts = [] # Creates an empty list
for i in range(0,5) :
pts.append(GGeometry.CreatePoint(i,0,0))
return pts
points = CreateSomePoints()

The result is a list containing 5 point dictionaries. For example, the last point can be accessed via
points[4][‘points’][0] or points[4]. Alternatively, the following will yield a list of 5 point instances.

def CreateSomePoints() :
pts = [] # Creates an empty list
for i in range(0,5) :
p = GGeometry.CreatePoint(i,0,0)
pts.append( p['points'][0] )
return pts
points = CreateSomePoints()

To access the last point you must specify points[4]. Suppose finally that you create 2 points and assign them to the
same variable.

p1 = GGeometry.CreatePoint(0,0,0)
p1 = GGeometry.CreatePoint(1,0,0)

365
CFD-GEOM V2014.0 User Manual

In this case, the first point will be inaccessible. The reason is that, in the Python namespace, there is only one
variable p1. It only remembers the value that was most recently assigned to it. It is, therefore, a risky practice to
reuse variable names in CFD-GEOM scripting.

Journaling
Via its journaling capability, you can use CFD-GEOM to generate your scripts for you. When journaling is activated
for a model, the application of modeling tools, meshing tools, levels, user variables, undo/redo, and entity deletion
will cause the equivalent script command to be written to a journal file. This journal file can later be run via the
File->Open dialog (CFD-GEOM journal files are Python scripts and always have a .py extension).

There are 2 ways to initiate journaling in CFD-GEOM. The first is at model creation time. After you’ve specified a
model name and working directory, selected the “Activate Journaling” button, and pressed “Apply”, CFD-GEOM
will create a new model in the usual way. In addition, it will create a journal file with the name
<directory>/<modelname>.py and write a header to that file containing a few necessary import statements.
Subsequent entity creations, manipulations, etc. are journaled to the end of this file.

The second way to initiate journaling is to read an existing CFD-GEOM script and to elect to continue journaling to
that script. Electing to continue journaling is controlled by the corresponding setting in Edit->Preferences->Tools.
Any newly issued commands will be appended to the script.

In order to prevent the generation of corrupt journal files, CFD-GEOM’s journaling system enforces the following
restrictions:

• No two models can journal to the same script file in the same session. Note that it is still possible for 2
models in separate instances of CFD-GEOM to journal to the same file. This practice is guaranteed to
produce corrupt scripts and should be avoided.
• Once deactivated for a model, journaling can not be reactivated during the current session.
• Copying and pasting from one model to another can not be journaled
• Journaling can not be initiated at the end of a failed script run

In addition, most graphical operations such as blanking, unblanking, and changing the model view are not currently
journaled as they have no corresponding script functions.

When journaling commands that involve entity creation, CFD-GEOM automatically assigns names to newly created
entities on the fly and writes those names to the journal file. Suppose, for example, that you have an empty model
and then create 2 points through the point creation tool. CFD-GEOM will assign the names geom_point1 and
geom_point2, respectively, to the newly created points as follows (where the ellipses are replaced by the actual
coordinates)

geom_point1 = GGeometry.CreatePoint( ... )


geom_point2 = GGeometry.CreatePoint( ... )

If you then create a line from the 2 points, the resulting command would be

geom_line1 = GGeometry.CreateLine(geom_point1, geom_point2)

Recall from the discussion of “primary” entities in the section “Entities and Entity Dictionaries” that these are
examples of functions that create and return a primary entity, and hence, the resulting dictionary names can be
used directly to reference the entities. Suppose that we now extrude a surface from the line. The resulting
command would look something like

366
CFD-GEOM Scripting

geom_surf1 = GGeometry.CreateExtrudedSurfaces( geom_line1, 0, 1, 0, 1, 1 )

As expected, the resulting surface is a primary entity and can be referenced either by geom_surf1 or
geom_surf1[‘surfs’][0]. The entities created as side effects of this operation are named as expected (e.g.
geom_surf1[‘lines’][0]) and those names are used in any subsequently journaled commands that involve those
entities. Suppose, however, that instead of creating 1 surface, you choose to extrude 2 of them. The resulting
command would look something like

geom_op_srfs1 = GGeometry.CreateExtrudedSurfaces( geom_line1, 0, 1, 0, 1, 2 )

The “geom_op” portion of the name serves, in this case, as an indicator that multiple surfaces were created, so the
resulting dictionary name can not be used alone to refer to the created surfaces (i.e. you’ll need to use the
dictionary’s ‘surfs’ list to get at those surfaces).

From a practical standpoint, you will likely need to use a combination of journaling and manual script editing to
create useful scripts. Following are the recommended steps you should follow when creating scripts via journaling:

1. Create a new model and activate journaling


2. Open the journal file in a text editor (it is helpful to use a text editor that will automatically check for
external changes to a file and reload if necessary)
3. Perform a modeling/meshing operation in the CFD-GEOM graphical user interface.
4. Examine the resulting journaled command. If you wish to change the name of the resulting dictionary (if
any), do so now. In addition, if you wish to assign entities with complicated names (e.g.
geom_op_srfs1[‘lines’][4]) to variables with simpler names, do so now. Finally, add any comments to the
script. If you do any of these, save the file and goto step 5. Otherwise go to step 3.
5. Rerun the script. The recommended way to do this is to press the “Reload Script” button on the scripting
toolbar.

In addition, if you perform an operation and wish to undo it, you may perform an undo. An undo command will be
written to the journal file. However, instead of doing this, it is recommended that you remove the last command
from the journal file and then replay the script. This will make your script run more efficiently.

Running CFD-GEOM Scripts in Other Applications


In addition to being able to run CFD-GEOM scripts from CFD-GEOM, you may also run them from Simulation
Manager, and from virtually any other application with an embedded Python interpreter, including a standalone
Python interpreter. Running CFD-GEOM scripts from other applications is akin to running CFD-GEOM in batch
mode (i.e. no CFD-GEOM window appears). We call this a “headless” CFD-GEOM. However, it is possible to
construct custom forms (via CFDForm) in both graphical and non-graphical applications. When constructed in non-
graphical contexts, CFDForm will automatically construct a mini graphical application lasting for the life of the
form.

When running CFD-GEOM scripts from other applications (including Simulation Manager), you should ensure that
the CFD-GEOM ScriptLanguage installation directory is in your PYTHONPATH. This should be handled automatically
by the Simulation Manager installation, but must be manually specified when run from other applications.

To run a CFD-GEOM script outside the CFD-GEOM graphical user interface, you must initialize CFD-GEOM in the
script. The standard approach is as follows:

import GUtils
...import other modules

367
CFD-GEOM V2014.0 User Manual

GUtils.StartGeom()
... CFD-GEOM script commands
GUtils.StopGeom()

The StartGeom() command consumes a CFD-GEOM license and initializes the CFD-GEOM scripting module.
Without this initialization, CFD-GEOM script API will not function properly. The StopGeom() command releases the
CFD-GEOM license and frees all memory consumed by CFD-GEOM. Note that, when run from the CFD-GEOM GUI,
these commands are not needed and have no effect.

Scripting Toolbar
The Scripting Toolbar allows reloading of Python scripts, launching the script in a text editor, halting a script run,
and execution of Python macros.

Scripting Toolbar

Reload Script
If a Python script has already been executed in CFD-GEOM, then some change is made to the script, the Reload
Script button can be used to execute the same script again to update the model. CFD-GEOM will clear the current
model window, and execute the script again from the beginning.

Launch Editor
The Launch Editor button will launch the script that is currently loaded in CFD-GEOM in the user specified text
editor. By default, Notepad is used on Windows and Vi is used on Linux/Unix systems. This can be configured in
the Edit −−> Preferences −−> Tools tab.

Halt Script
The Halt Script button can be used to terminate the execution of a script. This may be necessary if the script run
hangs, and thus will no complete. If this is required, there may be a coding problem in the script which will need to
be fixed.

Execute Macro
The Python Macro capability in CFD-GEOM is intended to all users to perform operations on previously created
entities. The following is a list of some uses for macros:
• Allows the execution of Python scripts against the current model
• Allows passage of picked entities (single- or multi-set) to the script
• Allows users to add their own custom capabilities to CFD-GEOM and to use those capabilities interactively
from the CFD-GEOM GUI

368
CFD-GEOM Scripting

• Facilitates the creation and usage of parts libraries


To execute a macro, do the following:
1. Exit any open modelling/meshing/BC tool
2. Pick one or more sets of 0 or more entities, pressing middle mouse after all but the last set
3. Press the “Execute Python Macro” button on the scripting/journaling toolbar
4. Select the macro (a *.py file) and run it
The following are a few details regarding Python Macros in CFD-GEOM:
• All picked entities are added to the picked_entities variable
• This variable is a list of entity dictionaries
• The length of the list corresponds to the number of sets of entities that were picked
• The length of each dictionary corresponds to the number of picked entities in each set
• There is no restriction on the number and types of picked entities
• Accessing the picked entities in the script is done in the usual way.

Example:
The following creates an interpolation curve through each set of picked points. The number of curves equals the
number of sets
for i in range( len(picked_entities) ):
GGeometry.CreateInterpolationCurve(
picked_entities[i]['points'], 0
)

Geometric Scripting Functions

GGeometry Scripting - Point Creation Tools


The following scripting functions may be used to create points, edit point locations, and various other point
creation/manipulation options. Each of these functions is part of the GGeometry Python module in CFD-GEOM.
To use these functions, you must first import the functions with an "import GGeometry" call at the top of your
Python script.

GGeometry.CreatePoint(X,Y,Z)

GGeometry.EditPoint(point_handle,X,Y,Z)

GGeometry.CreateOffsetPoints(reference_point,DX,DY,DZ)

GGeometry.CreateAveragePoint([reference_points],replace=0)

GGeometry.CreateCurveCurveIntersectionPoints(curve1,curve2)

GGeometry.CreateCurveSurfaceInsectionPoints(curve,surface)

GGeometry.CreateClosestPoints(point1,point2)

GGeometry.CreateParametricPointLineOrCurve(curve,parameter)

369
CFD-GEOM V2014.0 User Manual

GGeometry.CreateParametricPointOnSurface(surface,u,v)

GGeometry.FilterPointsLocally(points,precision)

GGeometry.EquatePoints(points)

GGeometry.ProjectPointsToLinesAndCurves(points,curves)

GGeometry.CreatePointAtEdgeGridPoint(edge,index)

GGeometry.CreatePoint

Prototype
GGeometry.CreatePoint(x,y,z)
Description
Create a CFD-GEOM point entity at the specified coordinates. and return a handle to it. Note that if there
is already a point within geometric tolerance of the specified coordinates, a new point is not created --
rather, a handle to the existing point is returned.
Inputs
Point locations for X, Y, and Z
Return Value
A newly created point at the user defined X, Y, and Z value. Note that if there is already a point within
geometric tolerance of the specified coordinates, a new point is not created -- rather, a handle to the
existing point is returned.
Errors
If proper X, Y, and Z values are not provided, an error will be raised.
Examples
#Create the point "mypoint"
point = GGeometry.CreatePoint(1,1,1)
Back to Top

GGeometry.EditPoint

Prototype
GGeometry.EditPoint(point,x,y,z)
Description
Move the specified CFD-GEOM point entity to the specified coordinates and update any attached
geometry/grid systems.
Inputs
Handle to the point to be moved and the new X, Y, and Z locations.
Return Value
None
Errors
An error will be raised only if the model is in an error state at the new point location.
Examples
#Create the point
point = GGeometry.CreatePoint(1,1,1)

370
CFD-GEOM Scripting

#Edit the location of mypoint


point = GGeometry.EditPoint(point,1,1,1)
Back to Top

GGeometry.CreateOffsetPoint

Prototype
GGeometry.CreateOffsetPoints(ref_point,dx,dy,dz)
Description
Create point(s) offset from the given reference point(s).
Inputs
Reference point and the amount of offset in X, Y, and Z directions.
Return Value
A new point created at a location dx, dy, and dz from the reference point.
Errors
An error will be raised if the handle to the reference point does not exist and/or dx, dy, and dz are not
specified..
Examples
#Create the reference point
point = GGeometry.CreatePoint(1,1,1)
#Edit the location of mypoint
offsetpoint = GGeometry.CreateOffsetPoint(point,1,1,1)
Back to Top

GGeometry.CreateAveragePoint

Prototype
GGeometry.CreateAveragePoint([ref_points],replace=0)
Description
Create a average point of the input reference points.
Inputs
List of points from which an average point will be created.
Return Value
A new point created at the average of the input points. If replace is equal to 1, the input points will be
replaced with the average point. If it replace is equal to zero, a new point will be created.
Errors
An error will be raised if a proper set of reference points are not provided or the option "replace" is not
specified.
Examples
#Create the reference points
point1 = GGeometry.CreatePoint(1,1,1)
point2 = GGeometry.CreatePoint(1,2,1)
point3 = GGeometry.CreatePoint(1,1,2)
#Create an average point called averageypoint
averagepoint = GGeometry.CreateAveragePoint([point1,point2,point3],replace=0)
Back to Top

371
CFD-GEOM V2014.0 User Manual

GGeometry.CreateCurveCurveIntersectionPoints

Prototype
GGeometry.CreateCurveCurveIntersectionPoints(curve1,curve2)
Description
Create point(s) at the intersection(s) of the input lines/curves.
Inputs
Two curve that intersect each other.
Return Value
A list of new points at the intersection of the input curves.
Errors
An error will be raised if the input curves do not intersect or some other error occurs.
Examples
#Intersect two curves to get new points called mypoints
points = GGeometry.CreateCurveCurveIntersectionPoints(curve1,curve2)
Back to Top

GGeometry.CreateCurveSurfaceIntersectionPoints

Prototype
GGeometry.CreateCurveSurfaceIntersectionPoints(curve,surface)
Description
Create point(s) at the intersection(s) of the input lines/curves with a surface.
Inputs
A line/curve and a surface.
Return Value
A list of new points at the intersection of the input curve and surface.
Errors
An error will be raised if the input curves do not intersect the surface or some other error occurs.
Examples
#Intersect a curve and a surface to get new points called mypoints
points = GGeometry.CreateCurveSurfaceIntersectionPoints(curve,surface)
Back to Top

GGeometry.CreateClosestPoints(entity1,entity2)

Prototype
GGeometry.CreateClosestPoints(entity1,entity2)
Description
Create the closest points of approach between two lines/curves or a line/curve and a surface.
Inputs
Two lines/curves or a line/curve and surface.
Return Value
A list of new points.
Errors

372
CFD-GEOM Scripting

An error will be raised if the proper inputs are not provided.


Examples
points = GGeometry.CreateClosestPoints(point1,point2)
Back to Top

GGeometry.CreateParametricPointOnLineOrCurve(curve,parameter)

Prototype
GGeometry.CreateParametricPointOnLineOrCurve(curve,parameter)
Description
Create point at a value within a line's curve's parameter space.
Inputs
A line or curve.
Return Value
A new point.
Errors
An error will be raised if the proper inputs are not provided.
Examples
point = GGeometry.CreateParametricPointOnLineOrCurve(curve,parameter)
Back to Top

GGeometry.CreateParametricPointOnSurface(surface,u,v)

Prototype
GGeometry.CreateParametricPointOnSurface(surface,u,v)
Description
Create point at a value within a surface's parameter space.
Inputs
A surface.
Return Value
A new point.
Errors
An error will be raised if the proper inputs are not provided.
Examples
point = GGeometry.CreateParametricPointOnSurface(surface,u,v)
Back to Top

GGeometry.FilterPointsLocally(points,precision)

Prototype
GGeometry.FilterPointsLocally(points,precision)
Description
Locally filter a collection of points using the specified precision.
Inputs
A list of points and precision value.
Return Value

373
CFD-GEOM V2014.0 User Manual

None
Errors
An error will be raised if the proper inputs are not provided.
Examples
GGeometry.FilterPointsLocally([points],precision)
Back to Top

GGeometry.EquatePoints(points)

Prototype
GGeometry.EquatePoints(points)
Description
Move the points [1...n] onto points[0] and update any attached geometry or mesh accordingly.
Inputs
A list of points.
Return Value
A new point.
Errors
An error will be raised if the proper inputs are not provided.
Examples
point = GGeometry.EquatePoints([points])
Back to Top

GGeometry.ProjectPointsToLinesAndCurves(points,curves)

Prototype
GGeometry.ProjectPointsToLinesAndCurves(points,curves)
Description
Create projected (closest point) copes of the input points onto the input lines/curves.
Inputs
A list of points and the destination lines/curves.
Return Value
Points with new positions on the lines/curves.
Errors
An error will be raised if the proper inputs are not provided.
Examples
points = GGeometry.ProjectPointsToLinesAndCurves([points],curves)
Back to Top

GGeometry.CreatePointAtEdgeGridPoint(edge,grid_point_index)

Prototype
GGeometry.CreatePointAtEdgeGridPoint(edge,grid_point_index)
Description
Create a point at an edge grid point.
Inputs

374
CFD-GEOM Scripting

An edge and an index for the grid point where the edge will be split. The index will run from 1 to number
of edge grid points.
Return Value
A new point
Errors
An error will be raised if the grid point index is outside the allowable range for the input edge, i.e. an edge
has 10 points and the index provided is larger than 10.
Examples
points = GGeometry.CreatePointAtEdgeGridPoint(edge,grid_point_index)

GGeometry Scripting - Line Creation Tools


The following scripting functions may be used to create lines, edit line locations, and various other line
creation/manipulation options. Each of these functions is part of the GGeometry Python module in CFD-GEOM.
To use these functions, you must first import the functions with an "import GGeometry" call at the top of your
Python script.

GGeometry.CreateLine(start_point,end_point)

GGeometry.CreateLines(points,closed=0)

GGeometry.ExtendLine(line,endpoint,amount)

GGeometry.CreateLinesParallelToVector(points,dx,dy,dz,ds,de)

GGeometry.CreateLinesParallelToLine(points,axis_line,ds,de)

GGeometry.CreateLinesParallelToPoints(points,axis_spt,axis_ept,ds,de)

GGeometry.CreateLinesPerpToVector(points, dx, dy, dz, ds, de, parallel_to_cplane)

GGeometry.CreateLinesPerpToPoints(points, axis_spt, axis_ept, ds, de, parallel_to_cplane)

GGeometry.CreateTangentLineAtParameter(curve,parameter,ds,de)

GGeometry.CreateTangentLineAtPoint(curve,point,ds,de)

GGeometry.CreateLineNormalToSurface(surface,point,ds,de)

GGeometry.ConvertCurvesToLines(curves)

GGeometry.CreateLine

Prototype
GGeometry.CreateLine(start_point,end_point)
Description

375
CFD-GEOM V2014.0 User Manual

Create a line entity between the specified points and return a handle to it.
Inputs
Start point and end point
Return Value
A newly created line between the input points.
Errors
If points are not specified, an error will be raised.
Examples
start_point = GPoint.CreatePoint(1,0,0)
end_point = GPoint.CreatePoint(0,1,0)
line = GGeometry.CreateLine(start_point,end_point)
Back to Top

GGeometry.CreateLines

Prototype
GGeometry.CreateLines(points,closed=0)
Description
Create lines between points.
Inputs
A list of points and a flag for closed (0 = not closed, 1 = closed)
Return Value
A set of lines between the input points.
Errors
If points are not specified or if the flag "closed" is not specified, an error will be raised.
Examples
point1 = GPoint.CreatePoint(1,0,0)
point2 = GPoint.CreatePoint(0,1,0)
point3 = GPoint.CreatePoint(1,1,0)
line = GGeometry.CreateLines([point1,point2,point3],closed=0)
Back to Top

GGeometry.ExtendLine

Prototype
GGeometry.ExtendLine(line,endpoint,amount)
Description
Extend a current lines length by a given amount.
Inputs
A line, an end point of the line, and the amount the line is to be extended.
Return Value
None
Errors
If points are not specified or if the flag "closed" is not specified, an error will be raised.
Examples
line = GGeometry.CreateLine(start_point,end_point)
extended_line = GGeometry.ExtendLine(line,end_point,1)

376
CFD-GEOM Scripting

Back to Top

GGeometry.CreateLinesParallelToVector

Prototype
GGeometry.CreateLinesParallelToVector(points,dx,dy,dz,ds,de
Description
Create lines (through the given points) that are parallel to the specified vector (i.e. that run in the
direction specified by the vector). Line length is implied by "ds" and "de", where ds is the distance from
each reference point to the corresponding line's start point, and de is the distance from each reference
point to the corresponding line's end point.
Inputs
Points, vector, and length of each respective line.
Return Value
Lines parallel to input vector.
Errors
If points, the vector, or the length of the line are not specified properly, an error will be raised.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
parallel_line = GGeometry.CreateLinesParallelToVector(point1,1,0,0,1,1)
Back to Top

GGeometry.CreateLinesParallelToLine

Prototype
CreateLinesParallelToLine(points, axis_line, ds, de)
Description
Create lines (through the given points) that are parallel to the specified axis line (i.e. that run in the
direction implied by the axis line). Line length is implied by "ds" and "de", where ds is the distance from
each reference point to the corresponding new line's start point, and de is the distance from each
reference point to the corresponding new line's end point.
Inputs
Points, axis line, and length of each respective line.
Return Value
Lines parallel to axis line.
Errors
If points, the axis line, or the length of the line are not specified properly, an error will be raised.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(1,1,0)
line = GGeometry.CreateLine(point1,point2)
parallel_line = GGeometry.CreateLinesParallelToLine(point1,line,1,1)
Back to Top

GGeometry.CreateLinesParallelToPoints

Prototype
CreateLinesParallelToPoints(points, axis_spt, axis_ept, ds, de)

377
CFD-GEOM V2014.0 User Manual

Description
Create lines (through the given points) that are parallel to an axis defined by two points. Line length is
implied by "ds" and "de", where ds is the distance from each reference point to the corresponding new
line's start point, and de is the distance from each reference point to the corresponding new line's end
point.
Inputs
Points, axis start point, axis end point, and length of each respective line.
Return Value
Lines parallel to the axis start point and end point.
Errors
If points, the axis start or end point, or the length of the line are not specified properly, an error will be
raised.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(1,1,0)
parallel_line =
GGeometry.CreateLinesParallelToPoints([point1,point1,point2],1,1)
Back to Top

GGeometry.CreateLinesPerpToVector

Prototype
CreateLinesPerpToVector(points, dx, dy, dz, ds, de, parallel_to_cplane)
Description
Create lines (through the given points) that are perpendicular to the specified vector. As there can be an
infinite number of such lines for each reference point, the "parallel_to_cplane" option can help further
specify the lines. If parallel_to_cplane is 1 (TRUE), the new lines will run parallel to the current
construction plane. If 0 (FALSE), the new lines will run perpendicular to those lines and the reference axis.
The length of the lines is determined by ds and de. ds is the distance from a reference point to the start
point of the corresponding new line. de is the distance from a reference point to the endpoint of the
corresponding new line. Note that the length of the new lines is in no way affected by (dx,dy,dz) and that
vector need not be normalized prior to input.
Inputs
Points, vector specification (dx, dy, and dz) length to start and end point (ds and de), and whether or not
the line is parallel to the current construction plane (TRUE = 1).
Return Value
Lines parallel to the given vector.
Errors
If points, the vector, the start or end distance are not specified properly, an error will be raised.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(1,1,0)
perp_line = GGeometry.CreateLinesPerpToVector([point1,point2],1,0,0,1,1,0)
Back to Top

GGeometry.CreateLinesPerpToPoints

Prototype
CreateLinesPerpToPoints(points, axis_spt, axis_ept, ds, de, parallel_to_cplane)

378
CFD-GEOM Scripting

Description
Create lines (through the given points) that are perpendicular to an axis defined by 2 points. As there can
be an infinite number of such lines for each reference point, the "parallel_to_cplane" option can help
further specify the lines. If parallel_to_cplane is 1 (TRUE), the new lines will run parallel to the current
construction plane. If 0 (FALSE), the new lines will run perpendicular to those lines and to the reference
axis. The length of the lines is determined by ds and de. ds is the distance from a reference point to the
start point of the corresponding new line. de is the distance from a reference point to the endpoint of the
corresponding new line.
Inputs
Points, axis start point, axis end point, and length of each respective line.
Return Value
Lines perpendicular to the axis start point and end point.
Errors
If points, the axis start or end point, or the length of the line are not specified properly, an error will be
raised.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(1,1,0)
perp_line = GGeometry.CreateLinesPerpToPoints([point1,point2],1,0,1,1,0)
Back to Top

GGeometry.CreateTangentLineAtParameter

Prototype
GGeometry.CreateTangentLineAtParameter(curve,parameter,ds,de)
Description
Create a line tangent to the input curve at a parameter in the curve's parameter space. This value must be
in the range [0,1]. ds and de describe the distance from the point of tangency to the new line's start and
end points, respectively. Note that "crv" must be a curve entity (and not a line).
Inputs
curve - curve a line will be created tangent to
parameter - parameter space of the curve
ds - distance from each reference point to the start point
de - distance from each reference point to the end point
Return Value
A new line tangent to the input curve
Errors
If any inputs are incorrect, an error will be raised.
Examples
tangent_line = GGeometry.CreateTangentLineAtParameter(curve,0.5,10,10)
Back to Top

GGeometry.CreateTangentLineAtPoint

Prototype
GGeometry.CreateTangentLineAtPoint(curve,point,ds,de)
Description

379
CFD-GEOM V2014.0 User Manual

Create a line tangent to the input curve at a point. If the point does not lie on the curve, then the point of
tangency is taken to be the closest point projection of the point onto the curve. However, the new line
will always pass through the given point rather than the point of tangency. ds and de describe the
distance from the input point to the new line's start and end points, respectively. Note that "curve" must
be a curve entity (and not a line).
Inputs
curve - curve a line will be created tangent to
point - point on the curve through which the tangent line will be created
ds - distance from each reference point to the start point
de - distance from each reference point to the end point
Return Value
A new line tangent to the input curve at the input point
Errors
If any inputs are incorrect, an error will be raised.
Examples
mypoint = GGeometry.CreatePoint(1,1,1)
tangent_line = GGeometry.CreateTangentLineAtPoint(curve,mypoint,10,10)
Back to Top

GGeometry.CreateLineNormalToSurface

Prototype
GGeometry.CreateLineNormalToSurface(surface,point,ds,de)
Description
Create a line normal to a surface (trimmed or untrimmed) and passing through the given point. If the
point lies on the surface, the normal to the surface at that point describes the new line's direction. If not,
the normal is computed at the point on the surface that is closest to the input point. ds and de describe
the distance from the input point to the new line's start and end points, respectively.
Inputs
surface - surface that a line will be created perpendicular to
point - point on the surface through which the tangent line will be created
ds - distance from each reference point to the start point
de - distance from each reference point to the end point
Return Value
A new line tangent to the input curve at the input point
Errors
If any inputs are incorrect, an error will be raised.
Examples
mypoint = GGeometry.CreatePoint(1,1,1)
normal_line = GGeometry.CreateLineNormalToSurface(surface,mypoint,10,10)
Back to Top

GGeometry.ConvertCurvesToLines

Prototype
GGeometry.ConvertCurvesToLines(curves)

380
CFD-GEOM Scripting

Description
Convert the input curves to lines and update any attached geometry/grid systems. Note that any
curvature on any input curves will be lost. This function is mainly intended as a convenient way to convert
reasonably straight curves to lines for input into other routines that require lines, rather than curves, as
input. Note that the input curves are deleted by this routine.
Inputs
curves - a list of curves to be converted to lines
Return Value
New lines
Errors
If any inputs are incorrect, an error will be raised.
Examples
line = GGeometry.ConvertCurvesToLines(mycurve)
Back to Top

GGeometry Scripting - Conics Creation Tools


The following scripting functions may be used to create circuls, arcs, parabolas, and ellipses. Each of these
functions is part of the GGeometry Python module in CFD-GEOM. To use these functions, you must first import
the functions with an "import GGeometry" call at the top of your Python script.

GGeometry.Create3PtCircle(p1, p2, p3)

GGeometry.Create2PtCircle(cpt, spt)

GGeometry.CreateCpRadCircle(cpts, radius)

GGeometry.Create3PtArc(p1, p2, p3)

GGeometry.CreateCpRadArc(cpts, radius, start_angle, end_angle)

GGeometry.CreateEllipse(cpts, radius1, radius2, start_angle, end_angle)

GGeometry.CreateParabola(p1, p2, p3)

GGeometry.Create3PtCircle

Prototype
GGeometry.Create3PtCircle(p1, p2, p3)
Description
Create a circle through 3 non-colinear points.
Inputs
Three points
Return Value

381
CFD-GEOM V2014.0 User Manual

A handle to the new circle.


Errors
An error will be raised if three points are not input.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(0,1,0)
point3 = GGeometry.CreatePoint(-1,0,0)
three_pt_circle = GGeometry.Create3PtCircle(point1,point2,point3)
Back to Top

GGeometry.Create2PtCircle

Prototype
GGeometry.Create2PtCircle(cpt, spt)
Description
Create a circle with center point "cpt" and passing through point "spt". The imaginary line between these
two points must be parallel to the current construction plane. The newly created circle will be created in a
plane parallel to the current construction plane.
Inputs
Center point and point at any given radius.
Return Value
A handle to the new circle.
Errors
An error will be raised if two points are not input.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(0,1,0)
two_point_circle = GGeometry.Create2PtCircle(point1,point2)
Back to Top

GGeometry.CreateCpRadCircle

Prototype
GGeometry.CreateCpRadCircle(cpts, radius)
Description
Create circles with the given radius and centered on the input points. The new circles will be created in a
plane parallel to the current construction plane. A handle to the new circle(s) is returned.
Inputs
Point and radius value.
Return Value
A handle to the new circle.
Errors
If a point is not specified, or an invalid value is provide for the radius, an error will be raised.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
circle = GGeometry.CreateCpRadCircle(point1,5)
Back to Top

382
CFD-GEOM Scripting

GGeometry.Create3PtArc

Prototype
GGeometry.Create3PtArc(p1, p2, p3)
Description
Create an arc through 3 non-colinear points.
Inputs
Three points
Return Value
A handle to the new arc.
Errors
An error will be raised if three points are not input, or the value for one of the points is invalid.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(0,1,0)
point3 = GGeometry.CreatePoint(-1,0,0)
arc = GGeometry.Create3PtArc(point1,point2,point3)
Back to Top

GGeometry.CreateCpRadArc

Prototype
GGeometry.CreateCpRadArc(cpts, radius, start_angle, end_angle)
Description
Create arcs with the given radius, start/end angles, and centered on the input points. Each new arc will be
created in a plane parallel to the current construction plane. Note that the angles are expressed in
degrees. A handle to the new arc(s) is returned.
Inputs
Center point, radius, and start and end angle.
Return Value
A handle to the new arc.
Errors
An error will be raised if the center point, radius, start or end angle are not specified. An error will also be
raised if any of these values are invalid.
Examples
point1 = GGeometry.CreatePoint(0,0,0)
arc = GGeometry.CreateCpRadArc(point1,5,0,90)
Back to Top

GGeometry.CreateEllipse

Prototype
GGeometry.CreateEllipse(cpts, radius1, radius2, start_angle, end_angle)
Description
Create elliptical arcs with the given radii, start/end angles, and centered on the input points. Each new arc
will be created in a plane parallel to the current construction plane. Note that the angles are expressed in
degrees. A handle to the new arc(s) is returned.
Inputs

383
CFD-GEOM V2014.0 User Manual

Center point, two radius values, the start and end angle.
Return Value
A handle to the ellipse.
Errors
An error will be raised if the center point, either radius, or the start and end angle is not specified. An
error will also be raised if any of these values are invalid.
Examples
point1 = GGeometry.CreatePoint(0,0,0)
ellipse = GGeometry.CreateEllipse(point1,1,2,0,90)
Back to Top

GGeometry.CreateParabola

Prototype
GGeometry.CreateParabola(p1, p2, p3)
Description
Create a parabola through 3 non-colinear points.
Inputs
Three points.
Return Value
A handle to the parabola.
Errors
An error will be raised if three points are not specified. An error will also be raised if any of these values
are invalid.
Examples
point1 = GGeometry.CreatePoint(1,0,0)
point2 = GGeometry.CreatePoint(0,1,0)
point3 = GGeometry.CreatePoint(-1,0,0)
parabola = GGeometry.CreateParabola(point1,point2,point3)
Back to Top

GGeometry Scripting - Curve Creation Tools


The following scripting functions may be used to create different types of curves. Each of these functions is part of
the GGeometry Python module in CFD-GEOM. To use these functions, you must first import the functions with an
"import GGeometry" call at the top of your Python script.

GGeometry.CreateInterpolationCurve(points, closed=0)

GGeometry.CreateBlendCurve(crv1, p1, crv2, p2)

GGeometry.CreateCircularFilletCurve(line1, p1, line2, p2, radius)

GGeometry.CreateGeneralFilletCurve(crv1, p1, param1, crv2, p2, param2

GGeometry.CreateCurveOnSurfaceBetweenPoints(srf, p1, p2, disretization)

384
CFD-GEOM Scripting

GGeometry.CreateCurveOnSurfaceBetweenParamAndPoint(srf, u1, v1, p2, disretization)

GGeometry.CreateCurveOnSurfaceBetweenPointAndParam(srf, p1, u2, v2, disretization)

GGeometry.CreateCurveOnSurfaceBetweenParams(srf, u1, v1, u2, v2, disretization)

GGeometry.CreateOffsetCurves(crvs, dx, dy, dz, ds)

GGeometry.CreateOffsetCurvesViaLine(crvs, line, ds)

GGeometry.CreateOffsetCurvesViaPoints(crvs, spt, ept, ds)

GGeometry.CreateAverageCurve(crvs, replace, discretization=31)

GGeometry.CreateAverageCurveFromCurveSets(crvs1, crvs2, reverse, discretization)

GGeometry.CreateHelixCurve(point, sx, sy, sz, dx, dy, dz, freq, nturns, reverse)

GGeometry.CreateHelixCurveAlongLine(point, line, freq, nturns, reverse)

GGeometry.CreateHelixCurveAlongPoints(point, spt, ept, freq, nturns, reverse)

GGeometry.CreateBezierCurve(spt, ept, cp1, cp2)

GGeometry.CreateIsoParametricCurves(srf, u, v)

GGeometry.ReduceCurveControlPoints(curves, tolerance)

GGeometry.MinimizeLinesCurves(lines_and_curves, angle_threshold)

ReshapeCurve(input_curve, points, retain_original=0 )

GGeometry.CreateInterpolationCurve

Prototype
GGeometry.CreateInterpolationCurve(points, closed=0)
Description
Interpolate a curve through a list of 2 or more points and return a handle to it. If "closed" is 1 (TRUE),
wrap the curve back around to the first point. By default, this is 0 (FALSE).
Back to Top

GGeometry.CreateBlendCurve

Prototype
GGeometry.CreateBlendCurve(crv1, p1, crv2, p2)
Description
Create a blend curve between two lines/curves. The two points p1 and p2 must be endpoints of crv1 and
crv2, respectively, and indicate at which side of those lines/curves the blend is to occur. A handle to the
new curve is returned.

385
CFD-GEOM V2014.0 User Manual

Back to Top

GGeometry.CreateCircularFilletCurve

Prototype
GGeometry.CreateCircularFilletCurve(line1, p1, line2, p2, radius)
Description
Create a circular fillet curve with the given radius between the two lines. The two points p1 and p2 must
be endpoints of line1 and line2, respectively, and govern the new curve's orientation. A handle to the new
curve is returned.
Back to Top

GGeometry.CreateGeneralFilletCurve

Prototype
GGeometry.CreateGeneralFilletCurve(crv1, p1, param1, crv2, p2, param2)
Description
Create a general fillet curve between two lines/curves. The two points p1 and p2 must be endpoints of
crv1 and crv2, respectively, and govern the new curve's orientation. The new curve is anchored at param1
and param2 within the parameter space of crv1 and crv2, respectively. These values must be in the range
[0,1]. A handle to the new curve is returned.
Back to Top

GGeometry.CreateCurveOnSurfaceBetweenPoints

Prototype
GGeometry.CreateCurveOnSurfaceBetweenPoints(srf, p1, p2, discretization)
Description
Create a curve on a surface between any two points on the surface. "discretization" is the number of
samples used to compute the curve. Higher values will cause the curve to more accurately follow the
surface characteristics. The minimum allowable value is 3. A handle to the new curve is returned.
Back to Top

GGeometry.CreateCurveOnSurfaceBetweenParamAndPoint

Prototype
GGeometry.CreateCurveOnSurfaceBetweenParamAndPoint(srf, u1, v1, p2, discretization)
Description
Create a curve on a surface between any two points on the surface, where the first point is specified as a
u,v parameter in the parameter space of the surface. u1 and v1 must be in the range [0,1].
"discretization" is the number of samples used to compute the curve. Higher values will cause the curve
to more accurately follow the surface characteristics. The minimum allowable value is 3. A handle to the
new curve is returned.
Back to Top

GGeometry.CreateCurveOnSurfaceBetweenPointAndParam

Prototype

386
CFD-GEOM Scripting

GGeometry.CreateCurveOnSurfaceBetweenPointAndParam(srf, p1, u2, v2, discretization)


Description
Create a curve on a surface between any two points on the surface, where the second point is specified as
a u,v parameter in the parameter space of the surface. u2 and v2 must be in the range [0,1].
"discretization" is the number of samples used to compute the curve. Higher values will cause the curve
to more accurately follow the surface characteristics. The minimum allowable value is 3. A handle to the
new curve is returned.
Back to Top

GGeometry.CreateCurveOnSurfaceBetweenParams

Prototype
GGeometry.CreateCurveOnSurfaceBetweenParams(srf, u1, v1, u2, v2, discretization)
Description
Create a curve on a surface between any two points on the surface, where both points are specified as u,v
parameters in the parameter space of the surface. The u and v values must be in the range [0,1]
"discretization" is the number of samples used to compute the curve. Higher values will cause the curve
to more accurately follow the surface characteristics. The minimum allowable value is 3. A handle to the
new curve is returned.
Back to Top

GGeometry.CreateOffsetCurves

Prototype
GGeometry.CreateOffsetCurves(crvs, dx, dy, dz, ds)
Description
Create curve(s) that are offset from the given curve(s), where the offset direction is computed via a
vector. "ds" is the offset distance. A handle to the new curve(s) is returned.
Back to Top

GGeometry.CreateOffsetCurvesViaLine

Prototype
GGeometry.CreateOffsetCurvesViaLine(crvs, line, ds)
Description
Create curve(s) that are offset from the given curve(s), where the offset direction is computed via a vector
defined by a line. "ds" is the offset distance. A handle to the new curve(s) is returned.
Back to Top

GGeometry.CreateOffsetCurvesViaPoints

Prototype
GGeometry.CreateOffsetCurvesViaPoints(crvs, spt, ept, ds)
Description
Create curve(s) that are offset from the given curve(s), where the offset direction is computed via a vector
defined by 2 point entities. "ds" is the offset distance. A handle to the new curve(s) is returned.
Back to Top

387
CFD-GEOM V2014.0 User Manual

GGeometry.CreateAverageCurve

Prototype
GGeometry.CreateAverageCurve(crvs, replace, discretization=31)
Description
Create (and optionally replace) 2 or more lines/curves with an approximate average curve. Note that the
input lines/curves must share both endpoints. "replace" should be either 0 (FALSE) or 1 (TRUE). The
discretization parameter (an integer) controls the accuracy of the approximation by influencing the
number of control points used to represent the new curve. The higher the number, the more accurate
(and expensive) is the approximation. Any attached geometry/mesh systems are automatically updated,
and an exception is raised if this update can not be performed without damaging the model. Upon
success, a handle to the new curve is returned.
Back to Top

GGeometry.CreateAverageCurveFromCurveSets

Prototype
GGeometry.CreateAverageCurveFromCurveSets(crvs1, crvs2, reverse, discretization)
Description
Create a curve approximating the average of 2 line/curve sets. Each set must be properly connected, but
the sets need not share endpoints. The "reverse" flag (normally 0) must sometimes be set to 1 (TRUE) to
overcome orientation problems in some cases. The discretization parameter (an integer) controls the
accuracy of the approximation by influencing the number of control points used to represent the new
curve. The higher the number, the more accurate (and expensive) is the approximation. A handle to the
new curve is returned.
Back to Top

GGeometry.CreateHelixCurve

Prototype
GGeometry.CreateHelixCurve(point, sx, sy, sz, dx, dy, dz, pitch, nturns, reverse)
Description
Create a helix curve whose start point is the specified point. The axis about which it coils is defined by a
set of start point coordinates and a direction vector. "pitch" defines the length along the axis required to
make 1 turn. "nturns" defines the number of turns to make around the axis (can be fractional). The
orientation of the helix is defined such that, if looking down the axis in the positive direction, the helix
turns clockwise. Setting "reverse" to 1 (TRUE) will make the curve turn counterclockwise. A handle to the
new curve is returned.
Back to Top

GGeometry.CreateHelixCurveAlongLine

Prototype
GGeometry.CreateHelixCurveAlongLine(point, axis_line, pitch, nturns, reverse)
Description
Create a helix curve whose start point is the specified point. The axis about which it coils is defined by a
line. "pitch" defines the length along the axis required to make 1 turn. "nturns" defines the number of
turns to make around the axis (can be fractional). The orientation of the helix is defined such that, if

388
CFD-GEOM Scripting

looking down the axis from the axis line's start point to its endpoint, the helix turns clockwise. Setting
"reverse" to 1 (TRUE) will make the curve turn counterclockwise. A handle to the new curve is returned.
Back to Top

GGeometry.CreateHelixCurveAlongPoints

Prototype
GGeometry.CreateHelixCurveAlongPoints(point, axis_spt, axis_ept, pitch, nturns, reverse)
Description
Create a helix curve whose start point is the specified point. The axis about which it coils is defined by two
points. "pitch" defines the length along the axis required to make 1 turn. "nturns" defines the number of
turns to make around the axis (can be fractional). The orientation of the helix is defined such that, if
looking down the axis from the start point to the end point, the helix turns clockwise. Setting "reverse" to
1 (TRUE) will make the curve turn counterclockwise.
Back to Top

GGeometry.CreateBezierCurve

Prototype
GGeometry.CreateBezierCurve(spt, ept, cp1, cp2)
Description
Create a Bezier curve with end points "spt" and "ept". The shape of the new curve is determined by the
control points "cp1" and "cp2". A handle to the new curve is returned.
Back to Top

GGeometry.CreateIsoParametricCurves

Prototype
GGeometry.CreateIsoParametricCurves(srf, u, v)
Description
Create isoparametric curves on a surface at the specified parameters in the surface's parameter space. u
and v must be in the range [0,1]. A handle to the new curves is returned.
Back to Top

GGeometry.ReduceCurveControlPoints

Prototype
GGeometry.ReduceCurveControlPoints(curves, tolerance)
Description
Reduce the number of control points on one or more curves based on the input tolerance. Attached
geometry/grid systems will be automatically updated. An exception is raised if the update can not be
performed without damaging the model.
Back to Top

GGeometry.MinimizeLinesCurves

Prototype

389
CFD-GEOM V2014.0 User Manual

GGeometry.MinimizeLinesCurves(lines_and_curves, angle_threshold)
Description
Run a global line/curve filter using the specified tolerance and automatically update attached
geometry/mesh systems.
Back to Top

ReshapeCurve

Prototype
ReshapeCurve(input_curve, points, retain_original=0 )
Description
Reshape a line/curve with a set of source/target points. "points" is a list consisting of pairs of
source/target points. Each source point identifies a location on the curve that is to be moved to the
corresponding target point. If the source point does not lie on the curve, the nearest projection onto the
curve will be used to identify the source location on the curve. When complete, the reshaped curve will
pass through the target point(s).
If "retain_original" is 1 (TRUE), the input curve will be preserved, and a handle to a reshaped copy of the
input curve will be returned. If "retain_original" is 0 (FALSE) or is not specified, the following behaviors
apply:
1) If "input_curve" is a line entity, it will be replaced with the new curve. A handle to the new curve will
be returned. Attached geometry and grid systems will be updated.
2) If "input_curve" is a curve entity, it will be modified in place and attached geometry/grid systems will
be updated.
In both cases, the operation may fail if attached entities can not be updated without damaging the model.
Back to Top

GGeometry Scripting - Surface Creation Tools


The following scripting functions may be used to trimmed surfaces through extrusion, revolution, four sides, etc.
Each of these functions is part of the GGeometry Python module in CFD-GEOM. To use these functions, you must
first import the functions with an "import GGeometry" call at the top of your Python script.

GGeometry.FitSurfaceThroughCurves(crvs)

AdvancedCovering(curves, *basis_surf)

AdvancedCovering2(curves, surface_type, *basis_surf)

GGeometry.CreateExtrudedSurfaces(profile_ents, dx, dy, dz, distance_multiplier, numtimes)

GGeometry.CreateExtrudedSurfacesAlongLines(profile_ents, lines, numtimes)

GGeometry.CreateExtrudedSurfacesAlongPoints(profile_ents, points, numtimes)

GGeometry.CreateRevolvedSurfaces(profile_ents, sx, sy, sz, dx, dy, dz, angle, numtimes)

390
CFD-GEOM Scripting

GGeometry.CreateRevolvedSurfacesAboutLine(profile_ents, axis-line, angle, numtimes)

GGeometry.CreateRevolvedSurfacesAboutPoints(profile_ents, axis-spt, axis-ept, angle, numtimes)

GGeometry.CreateRevolvedSurfacesAbout3Points(profile_ents, cpt, spt, ept, numtimes)

GGeometry.CreateRevolvedSurfacesAboutPointAndVector(profile_ents, axis_spt, dx, dy, dz, angle, numtimes)

GGeometry.CreateSweptSurfaces(profile_ents, path_crvs, use_fixed_orientation, reverse, scale, numsteps

GGeometry.CreateSweptSurfacesWithTwistVector(profile_ents, path_crvs, use_fixed_orientation, dx, dy, dz,


reverse, scale, numsteps)

GGeometry.CreateLoftedSurface(*crvsets)

GGeometry.CreateCoonsSurface(*crvsets)

GGeometry.CreateOffsetSurface(srf, dist)

GGeometry.CreateSurfaceFromFace(face, use_edges)

GGeometry.ProjectSurfacesOntoSurfaces(surfaces, target_surfaces, dx, dy, dz, discretization, project_edges,


fill_gaps)

GGeometry.ProjectSurfacesOntoSurfacesAlongLine(surfaces, target_surfaces, line, discretization, project_edges,


fill_gaps)

GGeometry.ProjectSurfacesOntoSurfacesAlongPoints(surfaces, target_surfaces, spt, ept, discretization,


project_edges, fill_gaps)

GGeometry.ProjectSurfacesOntoSurfacesAlongNormals(surfaces, target_surfaces, discretization, project_edges,


fill_gaps)

GGeometry.ProjectSurfacesOntoSurfacesViaClosestPoint(surfaces, target_surfaces, discretization, project_edges)

GGeometry.CreateSurfacesFromUntrimmedSurfaces(usrfs)

GGeometry.FitSurfaceThroughCurves

Prototype
GGeometry.FitSurfaceThroughCurves(crvs)
Description
Fit a trimmed surface through the input lines, curves, edges, and/or composite edges. Note that the input
entities must form a single, properly connected, closed loop. A handle to the new surface is returned.
Back to Top

AdvancedCovering

Prototype
AdvancedCovering( curves, *basis_surf )

391
CFD-GEOM V2014.0 User Manual

Description
Cover the input curves with a surface. If the input curves form a suitable topology and can be properly
covered, a trimmed surface will be created and a handle to it will be returned. If the input curves do not
form a suitable topology, they will be covered by a new untrimmed surface, and a handle to this surface
will be returned. If basis_surf is not specified, an arbitrary planar surface will be calculated and deformed
to match the given curves. If basis_surf is an untrimmed surface, a copy of the surface will be deformed to
match the given curves. If basis_surf is a trimmed surface, a copy of its underlying untrimmed surface will
be deformed to match the given curves.

Note: This function exists only for backward compatibility. It is recommended that you use the
AdvancedCovering2 function.
Back to Top

AdvancedCovering2

Prototype
AdvancedCovering2(curves, surface_type, *basis_surf)
Description
Cover the input curves with a surface. If the input curves form a suitable topology and can be properly
covered, a trimmed surface will be created and a handle to it will be returned. If the input curves do not
form a suitable topology, they will be covered by a new untrimmed surface, and a handle to this surface
will be returned.
surface_type can have the following values:
0: The function will attempt to automatically determine the appropriate type of surface with which to
perform a best fit.
1: The function will attempt to calculate and deform a plane to match the input curves.
2: The function will attempt to calculate and deform a cylinder to match the input curves.
3: The function will attempt to calculate and deform a sphere to match the input curves.
4: The function will use the next argument, basis_surf, as the starting surface. If basis_surf is an
untrimmed surface, a copy of the surface will be deformed to match the given curves. If basis_surf is a
trimmed surface, a copy of its underlying untrimmed surface will be deformed to match the given curves.
Back to Top

GGeometry.CreateExtrudedSurfaces

Prototype
GGeometry.CreateExtrudedSurfaces(profile_ents, dx, dy, dz, distance_multiplier, numtimes)
Description
Create surface(s) by extruding profile lines/curves in a direction specified by a vector. Note that the vector
(dx, dy, dz) is not normalized by this routine. Hence, the total extrusion distances in X, Y, and Z are
dx*distance_multiplier, dy*distance_multiplier, and dz*distance_multipler.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

392
CFD-GEOM Scripting

GGeometry.CreateExtrudedSurfacesAlongLines

Prototype
GGeometry.CreateExtrudedSurfacesAlongLines(profile_ents, lines, numtimes)
Description
Create surface(s) by extruding profile lines/curves along a set of one or more lines. The direction and
distance is implied by the lines. Note that the lines must form a non-closed, connected set. Moreover, one
of the line set endpoints must also be an endpoint of at least one profile entity.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

GGeometry.CreateExtrudedSurfacesAlongPoints

Prototype
GGeometry.CreateExtrudedSurfacesAlongPoints(profile_ents, points, numtimes)
Description
Create surface(s) by extruding profile lines/curves along a set of two or more points. The direction and
distance is implied by the points.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

GGeometry.CreateRevolvedSurfaces

Prototype
GGeometry.CreateRevolvedSurfaces(profile_ents, sx, sy, sz, dx, dy, dz, angle, numtimes)
Description
Create surfaces by revolving profile lines/curves about an axis defined by a set of start point coordinates
and a vector. The input angle is assumed to be in degrees. Note that the magnitude of the angle must be
less than or equal to 360 degrees.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

GGeometry.CreateRevolvedSurfacesAboutLine

Prototype
GGeometry.CreateRevolvedSurfacesAboutLine(profile_ents, axis_line, angle, numtimes)
Description
Create surfaces by revolving profile lines/curves about an axis defined by a line entity. The input angle is
assumed to be in degrees. Note that the magnitude of the angle must be less than or equal to 360
degrees.

393
CFD-GEOM V2014.0 User Manual

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

GGeometry.CreateRevolvedSurfacesAboutPoints

Prototype
GGeometry.CreateRevolvedSurfacesAboutPoints(profile_ents, axis_spt, axis_ept, angle, numtimes)
Description
Create surfaces by revolving profile lines/curves about an axis defined by 2 point entities. The input angle
is assumed to be in degrees. Note that the magnitude of the angle must be less than or equal to 360
degrees.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

GGeometry.CreateRevolvedSurfacesAbout3Points

Prototype
GGeometry.CreateRevolvedSurfacesAbout3Points(profile_ents, cpt, spt, ept, numtimes)
Description
Create surfaces by revolving profile lines/curves about an axis defined by 3 point entities. cpt represents a
point on the rotation axis. The axis direction is defined by the normal to the plane containing cpt, spt, and
ept. The angle is implied by the angle between the vectors cpt->spt and cpt->ept. The 3 points must not
be colinear.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

GGeometry.CreateRevolvedSurfacesAboutPointAndVector

Prototype
GGeometry.CreateRevolvedSurfacesAboutPointAndVector(profile_ents, axis_spt, dx, dy, dz, angle,
numtimes)
Description
Create surfaces by revolving profile lines/curves about an axis defined by a point entity and a vector. The
input angle is assumed to be in degrees. Note that the magnitude of the angle must be less than or equal
to 360 degrees.
"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the new surface(s) is returned.
Back to Top

394
CFD-GEOM Scripting

GGeometry.CreateSweptSurfaces

Prototype
GGeometry.CreateSweptSurfaces(profile_ents, path_crvs, use_fixed_orientation, reverse, scale,
numsteps)
Description
Create surfaces by sweeping profile lines/curves along a set of path curves and return a handle to those
surfaces. The meanings of the remaining parameters are as follows:
use_fixed_orientation: if 1 (TRUE), maintain the original profile orientation throughout the sweep (i.e.
each surface should be created by a simple translation of the original profile). If 0 (FALSE), the profile is re-
oriented along the sweep path to be normal to the sweep path.
reverse: if 1 (TRUE), reverse the sweep direction. Otherwise this parameter should be 0 (FALSE).
scale: the linear scaling to be applied to the geometry along the sweep path. Ordinarily, this value will be
1.
numsteps: the number of sampling points to use along the sweep path. Larger values will tend to better
approximate the geometric variations along the sweep path, but will increase the expense of the
computation. The minimum value is 5.
Back to Top

GGeometry.CreateSweptSurfacesWithTwistVector

Prototype
GGeometry.CreateSweptSurfacesWithTwistVector(profile_ents, path_crvs, use_fixed_orientation, dx, dy,
dz, reverse, scale, numsteps)
Description
Create surfaces by sweeping profile lines/curves along a set of path curves and return a handle to those
surfaces. This function is useful for controlling the nature of the sweep when the sweep path is non-
planar. The vector (dx,dy,dz) should be specified as the one most "normal" to the sweep path. For
example, the dz vector should be specified for a path which lies entirely in the XY plane. For a helical path,
this vector should be the axis of the helix. The meanings of the remaining parameters are as follows:
use_fixed_orientation: if 1 (TRUE), maintain the original profile orientation throughout the sweep (i.e.
each surface should be created by a simple translation of the original profile). If 0 (FALSE), the profile is re-
oriented along the sweep path to be normal to the sweep path.
reverse: if 1 (TRUE), reverse the sweep direction. Otherwise this parameter should be 0 (FALSE).
scale: the linear scaling to be applied to the geometry along the sweep path. Ordinarily, this value will be
1.
numsteps: the number of sampling points to use along the sweep path. Larger values will tend to better
approximate the geometric variations along the sweep path, but will increase the expense of the
computation. The minimum value is 5.
Back to Top

GGeometry.CreateLoftedSurface

Prototype
GGeometry.CreateLoftedSurface(*crvsets)
Description

395
CFD-GEOM V2014.0 User Manual

Create a lofted (i.e. ruled) surface through 2 or more line/curve sets. A handle to the new surface is
returned.
Back to Top

GGeometry.CreateCoonsSurface

Prototype
GGeometry.CreateCoonsSurface(*crvsets)
Description
Create a Coons surface through 2, 3, or 4 line/curve/edge sets. Each set must be properly connected.
Collectively, the sets must form a closed set. A handle to the new surface is returned.
Back to Top

GGeometry.CreateOffsetSurface

Prototype
GGeometry.CreateOffsetSurface(srf, dist)
Description
Create a surface offset from the input surface by the given distance. The offset "direction" is governed by
the orientation of the input surface. Hence, you can specify either a positive or negative distance to
control which side of the input surface the new surface is to be offset. A handle to the new surface is
returned.
Back to Top

GGeometry.CreateSurfaceFromFace

Prototype
GGeometry.CreateSurfaceFromFace(face, use_edges)
Description
Create a trimmed surface from a face. The new surface is interpolated through the face's grid points. If
use_edges is 1 (true), the surface boundaries (i.e. trimming loops) are constructed from the bounding
edges of the face. If 0 (false), the surface boundaries are constructed from the edges' underlying
lines/curves. A handle to the new surface is returned.
Back to Top

GGeometry.ProjectSurfacesOntoSurfaces

Prototype
GGeometry.ProjectSurfacesOntoSurfaces(surfaces, target_surfaces, dx, dy, dz, discretization,
project_edges, fill_gaps)
Description
Create new surfaces by projecting copies of a set of surfaces onto a set of target surfaces and return a
handle to the new surfaces. The direction of projection is specified by the vector (dx, dy, dz). The
meanings of the remaining parameters are as follows:
discretization: defines how well the projected surfaces will match the surfaces onto which they are
projected. Larger numbers will match the surface characteristics better but with longer computation
times; to remove small features, use smaller values. The minimum value must be greater than or equal to
5.

396
CFD-GEOM Scripting

project_edges: If 0 (FALSE), the edges of the surfaces will not be projected and will remain coincident with
the original edges bounding the surface. Set this option to 1 (TRUE) when the surface bounding edges do
not lie on the surfaces onto which the surfaces are being projected.
fill_gaps: If 1 (TRUE), fill those areas which do not project (because of gaps in the collection of target
surfaces). If 0 (FALSE), then the points will remain on the original surface.
Back to Top

GGeometry.ProjectSurfacesOntoSurfacesAlongLine

Prototype
GGeometry.ProjectSurfacesOntoSurfacesAlongLine(surfaces, target_surfaces, line, discretization,
project_edges, fill_gaps)
Description
Create new surfaces by projecting copies of a set of surfaces onto a set of target surfaces and return a
handle to the new surfaces. The direction of projection is defined by a line entity. The meanings of the
remaining parameters are as follows:
discretization: defines how well the projected surfaces will match the surfaces onto which they are
projected. Larger numbers will match the surface characteristics better but with longer computation
times; to remove small features, use smaller values. The minimum value must be greater than or equal to
5.
project_edges: If 0 (FALSE), the edges of the surfaces will not be projected and will remain coincident with
the original edges bounding the surface. Set this option to 1 (TRUE) when the surface bounding edges do
not lie on the surfaces onto which the surfaces are being projected.
fill_gaps: If 1 (TRUE), fill those areas which do not project (because of gaps in the collection of target
surfaces). If 0 (FALSE), then the points will remain on the original surface.
Back to Top

GGeometry.ProjectSurfacesOntoSurfacesAlongPoints

Prototype
GGeometry.ProjectSurfacesOntoSurfacesAlongPoints(surfaces, target_surfaces, spt, ept, discretization,
project_edges, fill_gaps)
Description
Create new surfaces by projecting copies of a set of surfaces onto a set of target surfaces and return a
handle to the new surfaces. The direction of projection is defined by 2 point entities. The meanings of the
remaining parameters are as follows:
discretization: defines how well the projected surfaces will match the surfaces onto which they are
projected. Larger numbers will match the surface characteristics better but with longer computation
times; to remove small features, use smaller values. The minimum value must be greater than or equal to
5.
project_edges: If 0 (FALSE), the edges of the surfaces will not be projected and will remain coincident with
the original edges bounding the surface. Set this option to 1 (TRUE) when the surface bounding edges do
not lie on the surfaces onto which the surfaces are being projected.
fill_gaps: If 1 (TRUE), fill those areas which do not project (because of gaps in the collection of target
surfaces). If 0 (FALSE), then the points will remain on the original surface.
Back to Top

397
CFD-GEOM V2014.0 User Manual

GGeometry.ProjectSurfacesOntoSurfacesAlongNormals

Prototype
GGeometry.ProjectSurfacesOntoSurfacesAlongNormals(surfaces, target_surfaces, discretization,
project_edges, fill_gaps)
Description
Create new surfaces by projecting copies of a set of surfaces onto a set of target surfaces and return a
handle to the new surfaces. The direction of projection is defined locally by the local normals of the
source surfaces. The meanings of the remaining parameters are as follows:
discretization: defines how well the projected surfaces will match the surfaces onto which they are
projected. Larger numbers will match the surface characteristics better but with longer computation
times; to
remove small features, use smaller values. The minimum value must be greater than or equal to 5.
project_edges: If 0 (FALSE), the edges of the surfaces will not be projected and will remain coincident with
the original edges bounding the surface. Set this option to 1 (TRUE) when the surface bounding edges do
not lie on the surfaces onto which the surfaces are being projected.
fill_gaps: If 1 (TRUE), fill those areas which do not project (because of gaps in the collection of target
surfaces). If 0 (FALSE), then the points will remain on the original surface.
Back to Top

GGeometry.ProjectSurfacesOntoSurfacesViaClosestPoint

Prototype
GGeometry.ProjectSurfacesOntoSurfacesViaClosestPoint(surfaces, target_surfaces, discretization,
project_edges)
Description
Create new surfaces by projecting copies of a set of surfaces onto a set of target surfaces and return a
handle to the new surfaces. The direction of projection is defined locally by closest point projection. The
meanings of the remaining parameters are as follows:
discretization: defines how well the projected surfaces will match the surfaces onto which they are
projected. Larger numbers will match the surface characteristics better but with longer computation
times; to remove small features, use smaller values. The minimum value must be greater than or equal to
5.
project_edges: If 0 (FALSE), the edges of the surfaces will not be projected and will remain coincident with
the original edges bounding the surface. Set this option to 1 (TRUE) when the surface bounding edges do
not lie on the surfaces onto which the surfaces are being projected.
Back to Top

GGeometry.CreateSurfacesFromUntrimmedSurfaces

Prototype
GGeometry.CreateSurfacesFromUntrimmedSurfaces(usrfs)
Description
Construct trimmed surfaces from 1 or more untrimmed surfaces. Each new surface will be bounded by
curves extracted from the mathematical boundaries of the corresponding untrimmed surface. A handle to
the new surface(s) is returned.
Back to Top

398
CFD-GEOM Scripting

GGeometry Scripting - Surface Modification Tools


The following scripting functions may be used to edit surfaces, such as cutting holes, removing holes, inverting
surfaces, etc. Each of these functions is part of the GGeometry Python module in CFD-GEOM. To use these
functions, you must first import the functions with an "import GGeometry" call at the top of your Python script.

GGeometry.UntrimSurfaces(srfs)

GGeometry.TrimSurface(srf, ents, keep_original)

GGeometry.TrimSurfaceAdvanced(srf, ents, keep_original)

GGeometry.CutHolesInSurface(srf, *entsets)

GGeometry.RemoveHolesFromSurface(srf, ents)

GGeometry.Make2Surfaces(srf, *entsets)

GGeometry.FillHolesInSurface(srf, ents)

GGeometry.InvertSurface(srf)

GGeometry.ModifySurfaceBoundary(set1, set2)

GGeometry.ReduceSurfaceControlPoints(surfaces, tolerance)

GGeometry.ReshapeSurface (surface, points)

GGeometry.UntrimSurfaces

Prototype
GGeometry.UntrimSurfaces(srfs)
Description
Untrim the specified surfaces. To untrim a surface means to remove its bounding curves, reducing it to its
raw mathematical definition (in CFD-GEOM, a spline). The original trimmed surfaces will be deleted, and
new untrimmed surface entities are returned.
Please note that a trimmed surface used in the construction of other entities (such as shells and semi-
structured domains) or to which structured faces have been projected can not be untrimmed.
Back to Top

GGeometry.TrimSurface

Prototype
GGeometry.TrimSurface(srf, ents, keep_original)
Description

399
CFD-GEOM V2014.0 User Manual

Define the outer boundary of a surface using the specified entities (lines, curves, edges, composite edges).
The entities must form a closed, properly connected set that lies on the surface. The behavior is defined
as follows:
1) If srf is a trimmed surface, its outer boundary is redefined. If keep_original is 1 (true), a copy of the
surface is created and retrimmed, leaving the original surface unaltered.
2) If srf is an untrimmed surface, it gets trimmed and a new trimmed surface is returned. If keep original is
1 (true), the new trimmed surface is built on a copy of the original untrimmed surface.
This function will always return a surface upon success. If the operation results in the creation of a new
trimmed surface, that surface will be returned. If you're simply modifying an existing trimmed surface,
that surface will be returned. However, if that surface becomes identical to an existing trimmed surface,
the latter will be returned.
Note that this operation can not be performed on surfaces from which shells, unstructured domains,
and/or semi-structured domains have been constructed. This restriction is necessary to prevent any
domains derived from the input surface from becoming non-manifold.
Back to Top

GGeometry.TrimSurfaceAdvanced

Prototype
GGeometry.TrimSurfaceAdvanced(srf, ents, keep_original)
Description
(Re)define all the boundaries of a surface using the specified entities (lines, curves, edges, composite
edges). The entities must lie on the surface and form a valid topology. The behavior is defined as follows:
1) If srf is a trimmed surface, its boundaries are redefined. If keep_original is 1 (true), a copy of the surface
is created and retrimmed, leaving the original surface unaltered.
2) If srf is an untrimmed surface, it gets trimmed and a new trimmed surface is returned. If keep original is
1 (true), the new trimmed surface is built on a copy of the original untrimmed surface.
If redefining the boundaries of an existing trimmed surface, a few additional restrictions apply:
3) This operation is never allowed on a surface that belongs to a semi-structured domain. If the surface
belongs to a shell, the operation may be permissible as long as it doesn't open the shell. See also note 4
below.
4) If the surface is part of a shell, if there any baffles hanging off any of the surface's current bounding
curves, and if any of those curves with attached baffles are not part of the input curves, the operation is
not permitted. To allow this would break the connection between the baffle and the surface, which would
eventually lead to tetrahedral meshing problems in the domain which uses the baffle.
This function will always return a surface upon success. If the operation results in the creation of a new
trimmed surface, that surface will be returned. If you're simply modifying an existing trimmed surface,
that surface will be returned. However, if that surface becomes identical to an existing trimmed surface,
the latter will be returned.
Back to Top

GGeometry.CutHolesInSurface

Prototype
GGeometry.CutHolesInSurface(srf, *entsets)
Description

400
CFD-GEOM Scripting

Cut holes in a trimmed surface with 1 or more closed, properly connected sets of lines, curves, edges,
and/or composite edges.
This function will always return a surface upon success. Ordinarily, it will return a new handle to the input
surface. However, if the operation results in a surface that is identical to an existing surface, the input
surface will be deleted and replaced (in the definitions of all descendants) with the pre-existing surface;
and a new handle to that surface will be returned.
Note that this operation can not be performed on surfaces from which shells, unstructured domains,
and/or semi-structured domains have been constructed. This restriction is necessary to prevent any
domains derived from the input surface from becoming non-manifold.
Back to Top

GGeometry.RemoveHolesFromSurface

Prototype
GGeometry.RemoveHolesFromSurface(srf, ents)
Description
Remove holes from the specified surface. "ents" must contain at least one entity (line, curve, edge, or
composite edge) in each hole to be removed.
This function will always return a surface upon success. Ordinarily, it will return a new handle to the input
surface. However, if the operation results in a surface that is identical to an existing surface, the input
surface will be deleted and replaced (in the definitions of all descendants) with the pre-existing surface;
and a new handle to that surface will be returned.
Note that this operation can not be performed on surfaces from which shells, unstructured domains,
and/or semi-structured domains have been constructed. This restriction is necessary to prevent any
domains derived from the input surface from becoming non-manifold.
Back to Top

GGeometry.Make2Surfaces

Prototype
GGeometry.Make2Surfaces(srf, *entsets)
Description
Simultaneously cut holes in a surface and fill those holes with new trimmed surfaces. Return the newly
created surface(s). Despite its name, this function can obviously be used to create more than 2 surfaces.
This function will always return at least 2 surfaces. The first will ordinarily be a new handle to the input
surface (in which holes have been cut). However, if the hole cutting causes the input surface to be
identical to an existing surface, the input surface will be deleted and replaced (in the definitions of all
descendants) with the pre-existing surface; and a new handle to that surface will be returned. The
remaining returned surface(s) will be the surface(s) created in the hole(s) that are cut in the input surface.
Ordinarily, these will be handles to newly created surface(s). However, if a surface created in a hole would
be identical to an existing surface, the new surface will not be created. Instead a new handle to the
existing surface will be returned.
Note that, unlike trimming, hole cutting, etc., this operation is permitted on surfaces from which shells
and unstructured domains have been derived. However, it is not permitted on surfaces from which semi-
structured domains have been derived.
Back to Top

401
CFD-GEOM V2014.0 User Manual

GGeometry.FillHolesInSurface

Prototype
GGeometry.FillHolesInSurface(srf, ents)
Description
Fill holes in the specified surface. "ents" must contain at least one entity (line, curve, edge, or composite
edge) bounding each hole to be filled. Each hole is filled with a new trimmed surface. This function returns
all newly created trimmed surfaces.

Note that, unlike trimming, hole cutting, etc., this operation is permitted on surfaces from which shells,
unstructured domains, and/or semi-structured domains have been derived. This is permitted because
hole filling does not modify the input surface.
Back to Top

GGeometry.InvertSurface

Prototype
GGeometry.InvertSurface(srf)
Description
Given a surface containing one or more holes, invert the surface. This simultaneously discards the surface,
fills the holes with new surfaces, and returns those new surfaces.
Note that this operation can not be performed on surfaces from which shells, unstructured domains,
and/or semi-structured domains have been constructed. This restriction is necessary to prevent any
domains derived from the input surface from becoming non-manifold.
Back to Top

GGeometry.ModifySurfaceBoundary

Prototype
GGeometry.ModifySurfaceBoundary(set1, set2)
Description
Replace a set of entities with another set of entities in the surface boundaries defined by the first set. This
function is intended for usage in the following circumstance:
Suppose that you've constructed an unstructured domain from a set of surfaces, all of which are bounded
by lines and curves. Suppose also that you've constructed an edge from 2 of the lines and curves and wish
to use that edge during mesh generation. In order to do this, you need to replace the 2 lines/curves with
the edge in the definitions of the loops (i.e. surface boundaries) derived from them. This function allows
you to do this. In this case, set1 would consist of the lines/curves and set2 would contain the edge.
Following a similar approach, you could also replace the edge with its underlying lines/curves.
Note that advanced users may find other uses for this function. In any case, the endpoints of set2 must
always be identical to the endpoints of set1.
Back to Top

GGeometry.ReduceSurfaceControlPoints

Prototype
GGeometry.ReduceSurfaceControlPoints(surfaces, tolerance)

402
CFD-GEOM Scripting

Description
Reduce (if possible) the number of control points (and knots) in 1 or more surfaces using the given
tolerance.
Back to Top

ReshapeSurface

Prototype
ReshapeSurface( surface, points)
Description
Reshape a surface with a set of source/target points.
"points" is a list consisting of pairs of source/target points. Each source point identifies a location on the
surface that is to be moved to the corresponding target point. If the source point does not lie on the
surface, the nearest projection onto the surface will be used to identify the source location on the
surface. When complete, the modified surface will pass through the target point(s). Any attached
geometry will be updated. However, if this can not be accomplished without damaging the model, the
surface will not be reshaped.
Back to Top

GGeometry Model Repair Scripting Functions


GGeometry.FilterPointsGlobally(precision)

GGeometry.FilterCurvesGlobally(tolerance)

GGeometry.SewSurface(surfaces, gap_tolerance)

GGeometry.StitchSurfaces(srf1,srf2)

GGeometry.FilterPointsGlobally

Prototype
GGeometry.FilterPointsGlobally(precision)
Description
Run a global point filter using the specified precision.
Inputs
Precision value.
Return Value
None
Errors
An error will be raised if the proper inputs are not provided.
Examples
GGeometry.FilterPointsGlobally(precision)
Back to Top

403
CFD-GEOM V2014.0 User Manual

GGeometry.FilterCurvesGlobally

Prototype
GGeometry.FilterCurvesGlobally(tolerance)
Description
Run a global line/curve filter using the specified tolerance and automatically update attached
geometry/mesh systems.
Back to Top

GGeometry.SewSurfaces

Prototype
GGeometry.SewSurfaces(surfaces, gap_tolerance)
Description
Sew surfaces with a specified tolerance.
The sewing algorithm identifies groups of two or more curves that share endpoints and that have
attached surfaces. Those curves in a group that lie within the specified tolerance of each other are
replaced with an average curve, and the attached surfaces are recomputed. A handle to any newly
created curves is returned by this function.
"surfaces" is a list of the surfaces to be considered for sewing. If this list is empty, all trimmed surfaces in
the model are considered.
Note on undo/redo:
For each gap that is closed by this function, an "undo entry" is generated. For example, if this function
closes five gaps, and you wish to completely undo the action, you will need to perform five undo
operations.
Back to Top

GGeometry.StitchSurfaces

Prototype
GGeometry.StitchSurfaces(srf1,srf2)
Description
Stitch the two surfaces to remove overlaps and boundary mismatches.
Back to Top

GGeometry Scripting - Solid/Wireframe Creation Tools


The following scripting functions may be used to create a wireframe of the geometry or a solid through extrusion
or revolution. Each of these functions is part of the GGeometry Python module in CFD-GEOM. To use these
functions, you must first import the functions with an "import GGeometry" call at the top of your Python script.

GGeometry.CreateExtrudedWireFrame(profile_ents, dx, dy, dz, distance_multiplier, numtimes)

GGeometry.CreateExtrudedWireFrameAlongLines(profile_ents, lines, numtimes)

404
CFD-GEOM Scripting

GGeometry.CreateExtrudedWireFrameAlongPoints(profile_ents, points, numtimes)

GGeometry.CreateRevolvedWireFrame(profile_ents, sx, sy, sz, dx, dy, dz, angle, numtimes)

GGeometry.CreateRevolvedWireFrameAboutLine(profile_ents, axis_line, angle, numtimes)

GGeometry.CreateRevolvedWireFrameAboutPoints(profile_ents, axis_spt, axis_ept, angle, numtimes)

GGeometry.CreateRevolvedWireFrameAbout3Points(profile_ents, cpt, spt, ept, numtimes)

GGeometry.CreateRevolvedWireFrameAboutPointAndVector(profile_ents, axis_spt, dx, dy, dz, angle, numtimes)

GGeometry.CreateExtrudedSolids(profile_srfs, dx, dy, dz, distance_multiplier, numtimes)

GGeometry.CreateExtrudedSolidsAlongLines(profile_srfs, lines, numtimes)

GGeometry.CreateExtrudedSolidsAlongPoints(profile_srfs, points, numtimes)

GGeometry.CreateRevolvedSolids(profile_srfs, sx, sy, sz, dx, dy, dz, angle, numtimes)

GGeometry.CreateRevolvedSolidsAboutLine(profile_srfs, line, angle, numtimes)

GGeometry.CreateRevolvedSolidsAboutPoints(profile_srfs, spt, ept, angle, numtimes)

GGeometry.CreateRevolvedSolidsAbout3Points(profile_srfs, cpt, spt, ept, numtimes)

GGeometry.CreateRevolvedSolidsAboutPointAndVector(profile_srfs, spt, dx, dy, dz, angle, numtimes)

GGeometry.CreateAllDomains(surfaces and faces)

GGeometry.CreateAllDomains2(surfaces and faces)

GGeometry.CreateShell(surfaces and faces)

GGeometry.CreateDomain(shells)

AddBafflesToDomain(domain, srfs)

RemoveBafflesFromDomain(domain, srfs)

GGeometry.InvertModel(srfs, keep_original_domains)

GGeometry.SplitModelDomainsAtMajorPlane(plane, depth, keep_inside_box, keep_outside_box)

GGeometry.SplitModelDomainsAtMajorPlaneThroughPoint(plane, pt, keep_inside_box, keep_outside_box)

GGeometry.SplitModelDomainsAtConstructionPlane(keep_inside_box, keep_outside_box)

GGeometry.UniteDomains(blank_domain, tool_domains)

GGeometry.SubtractDomains(blank_domain, tool_domains)

GGeometry.IntersectDomains(blank_domain, tool_domains)

405
CFD-GEOM V2014.0 User Manual

GGeometry.InterfaceDomains(domains)

CreateBoxFromCorners(x1, y1, z1, x2, y2, z2, solid)

CreateBoxFromCenterAndDimension(x1, y1, z1, length_x, length_y, length_z, solid)

CreateCylinderFromTwoPoint(major_radius, minor_radius, top_radius, x1, y1, z1, x2, y2, z2, solid)

GGeometry.CreateExtrudedWireFrame

Prototype
GGeometry.CreateExtrudedWireFrame(profile_ents, dx, dy, dz, distance_multiplier, numtimes)
Description
Create lines/curves by extruding profile points/lines/curves in a direction specified by a vector. Note that
the vector (dx, dy, dz) is not normalized by this routine. Hence, the total extrusion distances in X, Y, and Z
are dx*distance_multiplier, dy*distance_multiplier, and dz*distance_multipler.
"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateExtrudedWireFrameAlongLines

Prototype
GGeometry.CreateExtrudedWireFrameAlongLines(profile_ents, lines, numtimes)
Description
Create lines/curves by extruding profile points/lines/curves along a set of one or more lines. The direction
and distance is implied by the lines. Note that the lines must form a non-closed, connected set. Moreover,
one of the line set endpoints must also be an endpoint of at least one profile line/curve or must be one of
the profile points (if any).

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateExtrudedWireFrameAlongPoints

Prototype
GGeometry.CreateExtrudedWireFrameAlongPoints(profile_ents, points, numtimes)
Description
Create lines/curves by extruding profile points/lines/curves along a set of two or more points. The
direction and distance is implied by the points.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

406
CFD-GEOM Scripting

GGeometry.CreateRevolvedWireFrame

Prototype
GGeometry.CreateRevolvedWireFrame(profile_ents, sx, sy, sz, dx, dy, dz, angle, numtimes)
Description
Create lines/curves by revolving profile points/lines/curves about an axis defined by a set of start point
coordinates and a vector. The input angle is assumed to be in degrees.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateRevolvedWireFrameAboutLine

Prototype
GGeometry.CreateRevolvedWireFrameAboutLine(profile_ents, axis_line, angle, numtimes)
Description
Create lines/curves by revolving profile points/lines/curves about an axis defined by a line entity. The
input angle is assumed to be in degrees.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateRevolvedWireFrameAboutPoints

Prototype
GGeometry.CreateRevolvedWireFrameAboutPoints(profile_ents, axis_spt, axis_ept, angle, numtimes)
Description
Create lines/curves by revolving profile points/lines/curves about an axis defined by 2 point entities. The
input angle is assumed to be in degrees.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateRevolvedWireFrameAbout3Points

Prototype
GGeometry.CreateRevolvedWireFrameAbout3Points(profile_ents, cpt, spt, ept, numtimes)
Description
Create lines/curves by revolving profile points/lines/curves about an axis defined by 3 point entities. cpt
represents a point on the rotation axis. The axis direction is defined by the normal to the plane containing
cpt, spt, and ept. The angle is implied by the angle between the vectors cpt->spt and cpt->ept. cpt, spt,
and ept must not be colinear.

407
CFD-GEOM V2014.0 User Manual

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateRevolvedWireFrameAboutPointAndVector

Prototype
GGeometry.CreateRevolvedWireFrameAboutPointAndVector(profile_ents, axis_spt, dx, dy, dz, angle,
numtimes)
Description
Create lines/curves by revolving profile points/lines/curves about an axis defined by a point entity and a
vector. The input angle is assumed to be in degrees.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateExtrudedSolids

Prototype
GGeometry.CreateExtrudedSolids(profile_srfs, dx, dy, dz, distance_multiplier, numtimes)
Description
Create surfaces by extruding profile surfaces in a direction specified by a vector. Note that the vector (dx,
dy, dz) is not normalized by this routine. Hence, the total extrusion distances in X, Y, and Z are
dx*distance_multiplier, dy*distance_multiplier, and dz*distance_multipler.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1. A handle to the newly created entities is returned.
Back to Top

GGeometry.CreateExtrudedSolidsAlongLines

Prototype
GGeometry.CreateExtrudedSolidsAlongLines(profile_srfs, lines, numtimes)
Description
Create surfaces by extruding profile surfaces along a set of one or more lines. The direction and distance
is implied by the lines. Note that the lines must form a non-closed, connected set. Moreover, one of the
line set endpoints must also be an endpoint of at least one profile surface's bounding curves.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1.
Back to Top

GGeometry.CreateExtrudedSolidsAlongPoints

Prototype
GGeometry.CreateExtrudedSolidsAlongPoints(profile_srfs, points, numtimes)

408
CFD-GEOM Scripting

Description
Create surfaces by extruding profile surfaces along a set of two or more points. The direction and distance
is implied by the points.

"numtimes" is an integer specifying the number of times to perform the extrusion. This value must be at
least 1.
Back to Top

GGeometry.CreateRevolvedSolids

Prototype
GGeometry.CreateRevolvedSolids(profile_srfs, sx, sy, sz, dx, dy, dz, angle, numtimes)
Description
Create surfaces by revolving profile surfaces about an axis defined by a set of start point coordinates and
a vector. The input angle is assumed to be in degrees. Note that the magnitude of the angle must be less
than 360 deg. Creating a surface via a full 360 deg revolution is not currently supported. You should
instead perform 2 180 deg revolutions, or something similar.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1.
Back to Top

GGeometry.CreateRevolvedSolidsAboutLine

Prototype
GGeometry.CreateRevolvedSolidsAboutLine(profile_srfs, line, angle, numtimes)
Description
Create surfaces by revolving profile surfaces about an axis defined by a line entity. The input angle is
assumed to be in degrees. Note that the magnitude of the angle must be less than 360 deg. Creating a
surface via a full 360 deg revolution is not currently supported. You should instead perform 2 180 deg
revolutions, or something similar.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1.
Back to Top

GGeometry.CreateRevolvedSolidsAboutPoints

Prototype
GGeometry.CreateRevolvedSolidsAboutPoints(profile_srfs, spt, ept, angle, numtimes)
Description
Create surfaces by revolving profile surfaces about an axis defined by 2 point entities. The input angle is
assumed to be in degrees. Note that the magnitude of the angle must be less than 360 deg. Creating a
surface via a full 360 deg revolution is not currently supported. You should instead perform 2 180 deg
revolutions, or something similar.

409
CFD-GEOM V2014.0 User Manual

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1.
Back to Top

GGeometry.CreateRevolvedSolidsAbout3Points

Prototype
GGeometry.CreateRevolvedSolidsAbout3Points(profile_srfs, cpt, spt, ept, numtimes)
Description
CCreate surfaces by revolving profile surfaces about an axis defined by 3 point entities. cpt represents a
point on the rotation axis. The axis direction is defined by the normal to the plane containing cpt, spt, and
ept. The angle is implied by the angle between the vectors cpt->spt and cpt->ept. cpt, spt, and ept must
not be colinear.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1.
Back to Top

GGeometry.CreateRevolvedSolidsAboutPointAndVector

Prototype
GGeometry.CreateRevolvedSolidsAboutPointAndVector(profile_srfs, spt, dx, dy, dz, angle, numtimes)
Description
Create surfaces by revolving profile surfaces about an axis defined by a point entity and a vector. The
input angle is assumed to be in degrees. Note that the magnitude of the angle must be less than 360 deg.
Creating a surface via a full 360 deg revolution is not currently supported. You should instead perform 2
180 deg revolutions, or something similar.

"numtimes" is an integer specifying the number of times to perform the revolution. This value must be at
least 1.
Back to Top

GGeometry.CreateAllDomains

Prototype
GGeometry.CreateAllDomains(surfaces and faces)
Description
Create as many unstructured domains (and underlying shells) as possible from the input collection of
trimmed surfaces, faces, and discrete surfaces. If the input collection is empty, CFD-GEOM will attempt to
use all trimmed surfaces, faces, and discrete surfaces in the current model. Note that no shell may consist
of both discrete and non-discrete entities. Hence, CFD-GEOM will not attempt to create mixed shells/
domains. Note that this function may fail if the input contains overlapping surfaces or gaps between
surfaces. Note also that this function is not capable of identifying Thin Wall surfaces, nor is it capable of
splitting discrete surfaces to satisfy topological constraints. If you suspect that your model may contain
ThinWall surfaces, or if you suspect that your model has discrete surfaces that may require splitting, you
should use CreateAllDomains2, instead. For example, if you have a single discrete surface (imported from
an STL file) that encloses multiple volumes, you should use CreateAllDomains2.

410
CFD-GEOM Scripting

This option is also available through GMesh.CreateAllDomains.


Back to Top

GGeometry.CreateAllDomains2

Prototype
GGeometry.CreateAllDomains2(surfaces and faces)
Description
Create as many unstructured domains (and underlying shells) as possible from the input collection of
trimmed surfaces, faces, and discrete surfaces. If the input collection is empty, CFD-GEOM will attempt to
use all trimmed surfaces, faces, and discrete surfaces in the current model. Note that no shell may consist
of both discrete and non-discrete entities. Hence, CFD-GEOM will not attempt to create mixed shells/
domains. Note that this function may fail if the input contains overlapping surfaces or gaps between
surfaces. This function differs from CreateAllDomains in several key respects:
1. It is capable of identifying embedded surfaces and tagging them as Thin Wall surfaces.
2. Where necessary, it will split any discrete surfaces to satisfy topological constraints. This can be useful if
your model consists of a single discrete surface (e.g. imported from STL) that bounds more than 1 volume.
3. Though not required, it is highly recommended that you mesh all trimmed surfaces with the desired
meshing parameters before calling this function. The success of this function depends, to a certain extent,
on the quality of the surface meshes.
This option is also available through GMesh.CreateAllDomains2.
Back to Top

GGeometry.CreateShell

Prototype
GGeometry.CreateShell(surfaces and faces)
Description
Create shells (formerly known as closed surface sets) from the input collection of surfaces and/or faces.
Note that if the input entities logically form more than one shell, this routine will return more than one
shell (the same behavior as in the GEOM GUI). Note that this routine can also handle discrete surfaces.
However, if the input contains any discrete surfaces, it must contain only discrete surfaces. Mixing with
trimmed surfaces and faces is not currently supported.

This option is also available through GMesh.CreateShell.


Back to Top

GGeometry.CreateDomain

Prototype
GGeometry.CreateDomain(shells)
Description
Create an unstructured domain from the input shells.

This option is also available through GMesh.CreateDomain.


Back to Top

411
CFD-GEOM V2014.0 User Manual

GGeometry.AddBafflesToDomain

Prototype
GGeometry.AddBafflesToDomain(domain, srfs)
Description
Add baffle surfaces to the specified domain. Note that this routine is currently used for testing only. Some
capabilities, such as the ability to output baffles to DTF is not currently supported. This will be remedied in
a future release.

This option is also available through GMesh.AddBafflesToDomain.


Back to Top

GGeometry.RemoveBafflesFromDomain

Prototype
GGeometry.RemoveBafflesFromDomain(domain, srfs)
Description
Remove baffles that were added via AddBafflesToDomain() from the specified domain.

This option is also available through GMesh.RemoveBafflesFromDomain.


Back to Top

GGeometry.InvertModel

Prototype
GGeometry.InvertModel(srfs, keep_original_domains)
Description
Invert the current model, using the specified capping surfaces. Model inversion is the derivation of the
geometry/topology of an internal flow field in a solid part. It is often convenient to think of it as the
derivation of an "air solid" from a solid. Suppose, for example, that you have a CAD model of a pump. To
perform a CFD analysis on the pump, you will need to model and mesh the internal volume through which
fluid passes (i.e. the "air solid") rather than the volume occupied by the material from which the pump is
constructed (i.e. the solid). In some applications, such as fluid-structure interaction, you may even need to
model and mesh both the solid and the "air solid". You may optionally preserve the original solids, in
which case CFD-GEOM will build clean interfaces between those solids and the new "air solids".
In order to invert a model in CFD-GEOM, the following conditions must be satisfied:
1. The portion to be inverted must consist only of unstructured domain(s). Inversion of solid(s) consisting of
structured and/or semi-structured domains is not supported. In addition, the unstructured domains
should consist only of trimmed surface entities (i.e. They should not be built from any Face or discrete
surface entities), and the trimmed surface entities should be bounded only by lines and curves (i.e. Not
edges).
2. The collection of domains to be inverted must have clearly defined inlets and outlets which are cappable
(see discussion of capping surfaces below). Here, "inlet" and "outlet" should not be confused with the
"Inlet" and "Outlet" BC types.
3. The collection of domains must have non-zero thickness throughout. In other words, there must not be
any infinitely thin walls separating the flow field from the region outside the domains.

412
CFD-GEOM Scripting

4. If inverting a collection consisting of multiple domains, the domains must have been stitched together
such that there are no arbitrary interfaces between them. For example, if these solids are read from a SAT
file, you will need to import with the "Interface Parts" or "Combine Parts" option selected. Failure to do
this may yield unexpected or undefined results during inversion.
Critical to the model inversion process is the specification of capping surfaces. Capping surfaces are those
surfaces--at the inlets and outlets--which contain holes which must be closed off to separate the "air
solid" from the region outside the original solid (It is helpful to remember that, prior to inversion, these
form a continuous volume). Behind the scenes, CFD-GEOM will construct new surfaces to form caps that
bound the new air solid and separate it from the region outside the original solid(s). Note that internal
surfaces should not be specified. For example, if your model consists of 2 solids with a shared surface, you
should not select that shared surface.
Back to Top

GGeometry.SplitModelDomainsAtMajorPlane

Prototype
GGeometry.SplitModelDomainsAtMajorPlane(plane, depth, keep_inside_box, keep_outside_box)
Description
Split the current model's unstructured domains at one of the major planes. See additional details
following the description of the input arguments.
"plane" is an integer specifying the plane (1-XY, 2-YZ, 3-XZ). "depth" specifies the position of the plane.
For example, a plane value of 1 and a depth of 5 specifies a plane parallel to the XY plane and passing
through Z=5.
"keep_inside_box" and "keep_outside_box" can be 0 (FALSE) or 1 (TRUE) and describe which portions of
the model are to be kept (i.e. not discarded) after the split. The term "box" refers to that portion of space
to the "front" of the specified plane. In the model splitting tool in the CFD-GEOM GUI, this box is easily
visible. However, if you need to use this function without that visual aid, it is helpful to remember the
following:
1. If "plane" is the XY plane, those portions of the model with a Z coordinate greater than or equal to
"depth" are considered inside the box.
2. If "plane" is the XZ plane, those portions of the model with a Y coordinate greater than or equal to
"depth" are considered inside the box.
3. If "plane" is the YZ plane, those portions of the model with an X coordinate greater than or equal to
"depth" are considered inside the box.
RECOMMENDED USAGE:
This function makes substantial changes to the current model that may result in the loss of certain types
of data such as boundary and volume conditions and mesh generation parameters. In addition, hybrid
unstructured domains (i.e. domains containing at least 1 edge or structured face) can not be split. Semi-
structured and structured domains can not be split; model splitting, therefore, can not be performed if
the model contains such entities that intersect the specified plane. Finally, undo/redo is not currently
supported.
It is therefore recommended that you use this function very early in your modeling/meshing process (e.g.
immediately after CAD import), before adding new entities, meshing, and boundary/volume condition
assignment. If used on an imported assembly model, it is also recommended that, during the import, you
select one of the "Assembly Processing" options. Failure to do this may result in the creation of arbitrary
interfaces between domains during the CAD import, which will persist after the model split.
ALGORITHM:

413
CFD-GEOM V2014.0 User Manual

This function performs the following steps:


1. It checks the model and verifies that it does not contain domains that violate the restrictions noted above.
2. It identifies those domains that intersect the plane and splits them (and their underlying lines, curves,
surfaces, and shells where they intersect the specified plane). Domains that don't intersect the plane in
any way are ignored,
3. It identifies all new and unmodified domains that lie inside and outside the "box". Depending upon the
"keep_inside_box" and "keep_outside_box" specifications, domains are discarded as appropriate.
Back to Top

GGeometry.SplitModelDomainsAtMajorPlaneThroughPoint

Prototype
GGeometry.SplitModelDomainsAtMajorPlaneThroughPoint(plane, pt, keep_inside_box,
keep_outside_box)
Description
Split the current model's unstructured domains at one of the major planes. This function is identical to
SplitModelDomainsAtMajorPlane except that the "depth" is implied by a point through which the plane
passes. Please see SplitModelDomainsAtMajorPlane for additional details.
Back to Top

GGeometry.SplitModelDomainsAtConstructionPlane

Prototype
GGeometry.SplitModelDomainsAtConstructionPlane(keep_inside_box, keep_outside_box)
Description
Split the current model's unstructured domains at the current construction plane.
"keep_inside_box" and "keep_outside_box" can be 0 (FALSE) or 1 (TRUE) and describe which portions of
the model are to be kept (i.e. not discarded) after the split. The term "box" refers to that portion of space
to the "front" of the construction plane. In the model splitting tool in the CFD-GEOM GUI, this box is easily
visible. However, if you need to use this function without that visual aid, it is helpful to rememeber that
what is to the "front" and "rear" of the plane depends upon the orientation of the plane; and the
construction plane's orientation depends upon how it was created. For example, a plane defined by 3
points p1, p2, and p3 will have an orientation opposite that of a plane defined by p1, p3, p2. Unless you
are quite certain of the orientation of the construction plane, you will likely need to experiment with the
"keep_inside_box" and "keep_outside_box" arguments to achieve the desired results.
In all other respects, this function has the same behavior and limitations as
SplitModelDomainsAtMajorPlane. See that function for additional details.
Back to Top

GGeometry.UniteDomains

Prototype
GGeometry.UniteDomains(blank_domain, tool_domains)
Description
Given a blank domain (an unstructured domain) and a set of tool domains (also unstructured domains),
unite the tool domains with the blank domain (the term "blank" should not be confused with the terms
blanking and unblanking that control entity visibility). Ordinarily, a single domain will be returned and the
original domains will be deleted. If any tool domains don't intersect the blank domain, multiple domains

414
CFD-GEOM Scripting

may be created. During the operation, lines, curves, and surfaces will be split, deleted, or created as
necessary. Any entities located in the interior of the new volume will be discarded unless they are also
used by other entities not involved in the operation.
Note that hybrid unstructured domains (i.e. domains containing at least 1 edge, structured face, or
discrete surface) can not be united. It is, therefore, recommended that this, and all other Boolean
operations, be performed before adding structured, semi-structured, or discrete topologies to the model.
Note also that certain types of information such as meshing parameters and boundary/volume conditions
may be lost as entities are split/deleted. It is therefore recommended that all Boolean operations be
performed before meshing and BC/VC assignment.
Back to Top

GGeometry.SubtractDomains

Prototype
GGeometry.SubtractDomains(blank_domain, tool_domains)
Description
Given a blank domain (an unstructured domain) and a set of tool domains (also unstructured domains),
subtract the tool domains from the blank domain (the term "blank" should not be confused with the
terms blanking and unblanking that control entity visibility). Ordinarily, a single domain will be returned
and the original domains will be deleted. If any tool domains don't intersect the blank domain, they and
their underlying entities may disappear altogether. During the operation lines, curves, and surfaces will be
split, deleted, or created as necessary. Any portions of the tool domains located outside the new volume
will be discarded unless they are also used by other entities not involved in the operation.
Note that hybrid unstructured domains (i.e. domains containing at least 1 edge, structured face, or
discrete surface) can not be subtracted. It is, therefore, recommended that this, and all other Boolean
operations, be performed before adding structured, semi-structured, or discrete topologies to the model.
Note also that certain types of information such as meshing parameters and boundary/volume conditions
may be lost as entities are split/deleted. It is therefore recommended that all Boolean operations be
performed before meshing and BC/VC assignment.
Back to Top

GGeometry.IntersectDomains

Prototype
GGeometry.IntersectDomains(blank_domain, tool_domains)
Description
Given a blank domain (an unstructured domain) and a set of tool domains (also unstructured domains),
intersect the tool domains with the blank domain (the term "blank" should not be confused with the
terms blanking and unblanking that control entity visibility). The new domains returned are the
intersection of the blank domain with the first tool domain, the intersection of the blank domain with the
second tool domain, etc. Therefore, the number of newly created domains will usually equal the number
of tool domains. Where a tool domain does not intersect the blank domain, no new domain will be
created. When done, all portions of the blank and tool domains that lie outside the newly created
domains will be deleted unless they are used by other entities not involved in the operation. For an
alternative to this function which also preserves the original volumes, see InterfaceDomains().
Note that hybrid unstructured domains (i.e. domains containing at least 1 edge, structured face, or
discrete surface) can not be intersected. It is, therefore, recommended that this, and all other Boolean
operations, be performed before adding structured, semi-structured, or discrete topologies to the model.
Note also that certain types of information such as meshing parameters and boundary/volume conditions

415
CFD-GEOM V2014.0 User Manual

may be lost as entities are split/deleted. It is therefore recommended that all Boolean operations be
performed before meshing and BC/VC assignment.
Back to Top

GGeometry.InterfaceDomains

Prototype
GGeometry.InterfaceDomains(domains)
Description
Given a set of unstructured domains, stitch them together to create clean interfaces between them.
Ordinarily, this function is used to mate two adjacent domains with overlapping surfaces at their
adjacency. In such cases, the overlapping surfaces will be split until both domains share a common surface
at the adjacency, enabling them to be meshed without an arbitrary interface. In cases where the volumes
of 2 domains overlap, the domains will be split into 3 domains consisting of the volume occupied
exclusively by the first domain, the volume occupied exclusively by the second domain, and the volume
representing the intersection of the 2 original domains.
Note that hybrid unstructured domains (i.e. domains containing at least 1 edge, structured face, or
discrete surface) can not be interfaced. It is, therefore, recommended that this, and all other Boolean
operations, be performed before adding structured, semi-structured, or discrete topologies to the model.
Note also that certain types of information such as meshing parameters and boundary/volume conditions
may be lost as entities are split/deleted. It is therefore recommended that all Boolean operations be
performed before meshing and BC/VC assignment.
Back to Top

CreateBoxFromCorners

Prototype
CreateBoxFromCorners( x1, y1, z1, x2, y2, z2, solid)
Description
Create a solid box from 2 corners. Note that the dimensions in each direction must be >= 1e-6. Arguments
are:
x1, y1, z1: coordinates of first corner
x2, y2, z2: coordinates of second corner
solid: If 1, create a solid (i.e. unstructured domain) from the newly created surfaces. If 0, create only the
surfaces (and underlying entities).
Return a handle to the newly created entities.
Back to Top

CreateBoxFromCenterAndDimensions

Prototype
CreateBoxFromCenterAndDimensions(x1, y1, z1, length_x, length_y, length_z, solid)
Description
Create a solid box from the specified center and dimensions
x1, y1, z1: coordinates of the center
length_x, length_y, length_z: dimensions of the box in the X, Y, and Z directions, respectively. These
must be >=1e-6.

416
CFD-GEOM Scripting

solid: If 1, create a solid (i.e. unstructured domain) from the newly created surfaces. If 0, create only the
surfaces (and underlying entities).
Return a handle to the newly created entities.
Back to Top

CreateCylinderFromTwoPoints

Prototype
CreateCylinderFromTwoPoints(major_radius, minor_radius, top_radius, x1, y1, z1, x2, y2, z2, solid)
Description
Create a solid cylinder with the following parameters.
major_radius, minor_radius: specifies the radius values of the base.
top_radius: specifies the radius value of the top
x1, y1, z1: coordinates of the axis start point.
x2, y2, z2: coordinates of the axis end point.
solid: If 1, create a solid (i.e. unstructured domain) from the newly created surfaces. If 0, create only the
surfaces (and underlying entities).
Back to Top

GGeometry Scripting - Transform or Duplicate/Transform Tools


The following scripting functions may be used to translate, rotate, mirror, and duplication of entities. Each of
these functions is part of the GGeometry Python module in CFD-GEOM. To use these functions, you must first
import the functions with an "import GGeometry" call at the top of your Python script.

GGeometry.TranslateEntities(entities, dx, dy, dz, distance_multiplier, duplicate, numtimes=1)

GGeometry.TranslateEntitiesAlongLine(entities, line, reverse, duplicate, numtimes=1)

GGeometry.TranslateEntitiesAlongPoints(entities, spt, ept, duplicate, numtimes=1)

GGeometry.RotateEntities(entities, sx, sy, sz, dx, dy, dz, angle, duplicate, numtimes)

GGeometry.RotateEntitiesAboutLine(entities, axis_line, angle, duplicate, numtimes)

GGeometry.RotateEntitiesAboutPoints(entities, axis_spt, axis_ept, angle, duplicate, numtimes)

GGeometry.RotateEntitiesAbout3Points(entities, cpt, spt, ept, duplicate, numtimes)

GGeometry.RotateEntitiesAboutPointAndVector(entities, spt, dx, dy, dz, angle, duplicate, numtimes)

GGeometry.ScaleEntities(entities, x, y, z, sx, sy, sz, duplicate, numtimes)

GGeometry.ScaleEntitiesAboutPoint(entities, pt, sx, sy, sz, duplicate, numtimes)

GGeometry.ScaleAllEntities(sx, sy, sz, duplicate)

417
CFD-GEOM V2014.0 User Manual

GGeometry.MirrorEntities(entities, ox, oy, oz, nx, ny, nz, duplicate)

GGeometry.MirrorEntitiesAboutMajorPlane(entities, plane, depth, duplicate)

GGeometry.MirrorEntitiesAboutMajorPlaneThroughPoint(entities, plane, pt, duplicate)

GGeometry.MirrorEntitiesAboutConstructionPlane(entities, duplicate)

GGeometry.AxiallyScaleEntities(entities, sx, sy, sz, dx, dy, dz, scale_factor, duplicate)

GGeometry.AxiallyScaleEntitiesAboutLine(entities, axis_line, scale_factor, duplicate)

GGeometry.AxiallyScaleEntitiesAboutPoints(entities, axis_spt, axis_ept, scale_factor, duplicate)

GGeometry.AxiallyScaleEntitiesAbout3Points(entities, cpt, spt, ept, scale_factor, duplicate)

GGeometry.AxiallyScaleEntitiesAboutPointAndVector(entities, spt, dx, dy, dz, scale_factor, duplicate)

GGeometry.ProjectEntitiesToSurfaces(entities, surfaces, dx, dy, dz, discretization, project_ends, fill_gaps,


duplicate)

GGeometry.ProjectEntitiesToSurfacesAlongLine(entities, surfaces, line, discretization, project_ends, fill_gaps,


duplicate)

GGeometry.ProjectEntitiesToSurfacesAlongPoints(entities, surfaces, spt, ept, discretization, project_ends, fill_gaps,


duplicate)

GGeometry.ProjectEntitiesToSurfacesAlongClosestPoints(entities, surfaces, discretization, project_ends, fill_gaps,


duplicate)

GGeometry.TranslateEntities

Prototype
GGeometry.TranslateEntities(entities, dx, dy, dz, distance_multiplier, duplicate, numtimes=1)
Description
Translate entities in a direction specified by a vector. Note that the vector (dx, dy, dz) is not normalized by
this routine. Hence, the total translation distances in X, Y, and Z are dx*distance_multiplier,
dy*distance_multiplier, and dz*distance_multipler. If duplicate is 1 (true), "numtimes" translated copies
of the specified entities will be created. If duplicate is 0 (false), numtimes is ignored.
Back to Top

GGeometry.TranslateEntitiesAlongLine

Prototype
GGeometry.TranslateEntitiesAlongLine(entities, line, reverse, duplicate, numtimes=1)
Description
Translate entities in a direction and distance implied by a line entity. If duplicate is 1 (true), "numtimes"
translated copies of the specified entities will be created. If duplicate is 0 (false), numtimes is ignored. If
reverse is 1 (true), the translation direction will be opposite the line's orientation.
Back to Top

418
CFD-GEOM Scripting

GGeometry.TranslateEntitiesAlongPoints

Prototype
GGeometry.TranslateEntitiesAlongPoints(entities, spt, ept, duplicate, numtimes=1)
Description
Translate entities in a direction and distance implied 2 point entities. If duplicate is 1 (true), "numtimes"
translated copies of the specified entities will be created. If duplicate is 0 (false), numtimes is ignored.
Back to Top

GGeometry.RotateEntities

Prototype
GGeometry.RotateEntities(entities, sx, sy, sz, dx, dy, dz, angle, duplicate, numtimes)
Description
Rotate entities about an axis defined by a set of start point coordinates and a vector. The input angle is
assumed to be in degrees. If duplicate is 1 (true), "numtimes" rotated copies of the specified entities will
be created. If duplicate is 0 (false), numtimes is ignored.
Back to Top

GGeometry.RotateEntitiesAboutLine

Prototype
GGeometry.RotateEntitiesAboutLine(entities, axis_line, angle, duplicate, numtimes)
Description
Rotate entities about an axis defined by a line entity. The input angle is assumed to be in degrees. If
duplicate is 1 (true), "numtimes" rotated copies of the specified entities will be created. If duplicate is 0
(false), numtimes is ignored..
Back to Top

GGeometry.RotateEntitiesAboutPoints

Prototype
GGeometry.RotateEntitiesAboutPoints(entities, axis_spt, axis_ept, angle, duplicate, numtimes)
Description
Rotate entities about an axis defined by 2 point entities. The input angle is assumed to be in degrees. If
duplicate is 1 (true), "numtimes" rotated copies of the specified entities will be created. If duplicate is 0
(false), numtimes is ignored.
Back to Top

GGeometry.RotateEntitiesAbout3Points

Prototype
GGeometry.RotateEntitiesAbout3Points(entities, cpt, spt, ept, duplicate, numtimes)
Description
Rotate entities about an axis defined by 3 point entities. cpt represents a point on the rotation axis. The
axis direction is defined by the normal to the plane containing cpt, spt, and ept. The angle is implied by
the angle between the vectors cpt->spt and cpt->ept. These 3 points must not be colinear. If duplicate is 1

419
CFD-GEOM V2014.0 User Manual

(true), "numtimes" rotated copies of the specified entities will be created. If duplicate is 0 (false),
numtimes is ignored.
Back to Top

GGeometry.RotateEntitiesAboutPointAndVector

Prototype
GGeometry.RotateEntitiesAboutPointAndVector(entities, spt, dx, dy, dz, angle, duplicate, numtimes)
Description
Rotate entities about an axis defined by a point entity and a vector. The input angle is assumed to be in
degrees. If duplicate is 1 (true), "numtimes" rotated copies of the specified entities will be created. If
duplicate is 0 (false), numtimes is ignored.
Back to Top

GGeometry.ScaleEntities

Prototype
GGeometry.ScaleEntities(entities, x, y, z, sx, sy, sz, duplicate, numtimes)
Description
Scale entities about a point (x,y,z). The parameters sx, sy, and sz specify the scaling factors in the X, Y, and
Z directions, respectively. If duplicate is 1 (true), "numtimes" scaled copies of the specified entities will be
created. If duplicate is 0 (false), numtimes is ignored.
Back to Top

GGeometry.ScaleEntitiesAboutPoint

Prototype
GGeometry.ScaleEntitiesAboutPoint(entities, pt, sx, sy, sz, duplicate, numtimes)
Description
Scale entities about a point entity. The parameters sx, sy, and sz specify the scaling factors in the X, Y, and
Z directions, respectively. If duplicate is 1 (true), "numtimes" scaled copies of the specified entities will be
created. If duplicate is 0 (false), numtimes is ignored.
Back to Top

GGeometry.ScaleAllEntities

Prototype
GGeometry.ScaleAllEntities(sx, sy, sz, duplicate)
Description
Scale all entities about the origin. The parameters sx, sy, and sz specify the scaling factors in the X, Y, and Z
directions, respectively. If duplicate is 1 (true), scaled copies of all entities will be created.
Back to Top

GGeometry.MirrorEntities

Prototype
GGeometry.MirrorEntities(entities, ox, oy, oz, nx, ny, nz, duplicate)

420
CFD-GEOM Scripting

Description
Mirror entities about a plane defined by an origin (ox, oy, oz) and plane normal (nx, ny, nz). If duplicate is
1 (true), create mirrored copies of the input entities. Note that mirroring via this type of input is not
available from the CFD-GEOM GUI.
Back to Top

GGeometry.MirrorEntitiesAboutMajorPlane

Prototype
GGeometry.MirrorEntitiesAboutMajorPlane(entities, plane, depth, duplicate)
Description
Mirror entities about one of the major planes. "plane" is an integer specifying the plane (1-XY, 2-YZ, 3-XZ).
"depth" specifies the position of the plane. For example, a plane value of 1 and a depth of 5 specifies a
plane parallel to the XY plane and passing through Z=5. If duplicate is 1 (true), create mirrored copies of
the input entities.
Back to Top

GGeometry.MirrorEntitiesAboutMajorPlaneThroughPoint

Prototype
GGeometry.MirrorEntitiesAboutMajorPlaneThroughPoint(entities, plane, pt, duplicate)
Description
Mirror entities about one of the major planes. "plane" is an integer specifying the plane (1-XY, 2-YZ, 3-XZ).
"pt" is a point entity through which the plane passes. If duplicate is 1 (true), create mirrored copies of the
input entities.
Back to Top

GGeometry.MirrorEntitiesAboutConstructionPlane

Prototype
GGeometry.MirrorEntitiesAboutConstructionPlane(entities, duplicate)
Description
Mirror entities about one of the major planes. "plane" is an integer specifying the plane (1-XY, 2-YZ, 3-XZ).
"pt" is a point entity through which the plane passes. If duplicate is 1 (true), create mirrored copies of the
input entities.
Back to Top

GGeometry.AxiallyScaleEntities

Prototype
GGeometry.AxiallyScaleEntities(entities, sx, sy, sz, dx, dy, dz, scale_factor, duplicate)
Description
Axially scale entities about an axis defined by a set of start point coordinates and a vector. If duplicate is 1
(true), create scaled copies of the input entities.
Back to Top

421
CFD-GEOM V2014.0 User Manual

GGeometry.AxiallyScaleEntitiesAboutLine

Prototype
GGeometry.AxiallyScaleEntitiesAboutLine(entities, axis_line, scale_factor, duplicate)
Description
Axially scale entities about an axis defined by a line entity. If duplicate is 1 (true), create scaled copies of
the input entities.
Back to Top

GGeometry.AxiallyScaleEntitiesAboutPoints

Prototype
GGeometry.AxiallyScaleEntitiesAboutPoints(entities, axis_spt, axis_ept, scale_factor, duplicate)
Description
Axially scale entities about an axis defined by 2 point entities. If duplicate is 1 (true), create scaled copies
of the input entities.
Back to Top

GGeometry.AxiallyScaleEntitiesAbout3Points

Prototype
GGeometry.AxiallyScaleEntitiesAbout3Points(entities, cpt, spt, ept, scale_factor, duplicate)
Description
Axially scale entities about an axis defined by 3 point entities. cpt represents a point on the axis. The axis
direction is defined by the normal to the plane containing cpt, spt, and ept. If duplicate is 1 (true), create
scaled copies of the input entities.
Back to Top

GGeometry.AxiallyScaleEntitiesAboutPointAndVector

Prototype
GGeometry.AxiallyScaleEntitiesAboutPointAndVector(entities, spt, dx, dy, dz, scale_factor, duplicate)
Description
Axially scale entities about an axis defined by a point entity and a vector. If duplicate is 1 (true), create
scaled copies of the input entities.
Back to Top

GGeometry.ProjectEntitiesToSurfaces

Prototype
GGeometry.ProjectEntitiesToSurfaces(entities, surfaces, dx, dy, dz, discretization, project_ends, fill_gaps,
duplicate)
Description
Project a set of points, lines, curves, and/or edges to 1 or more trimmed and/or untrimmed surfaces. The
direction of projection is defined by a vector (dx,dy,dz).
Back to Top

422
CFD-GEOM Scripting

GGeometry.ProjectEntitiesToSurfacesAlongLine

Prototype
GGeometry.ProjectEntitiesToSurfacesAlongLine(entities, surfaces, line, discretization, project_ends,
fill_gaps, duplicate)
Description
Project a set of points, lines, curves, and/or edges to 1 or more trimmed and/or untrimmed surfaces. The
direction of projection is defined by a line entity.
Back to Top

GGeometry.ProjectEntitiesToSurfacesAlongPoints

Prototype
GGeometry.ProjectEntitiesToSurfacesAlongPoints(entities, surfaces, spt, ept, discretization, project_ends,
fill_gaps, duplicate)
Description
Project a set of points, lines, curves, and/or edges to 1 or more trimmed and/or untrimmed surfaces. The
direction of projection is defined by a line entity.
Back to Top

GGeometry.ProjectEntitiesToSurfacesAlongClosestPoints

Prototype
GGeometry.ProjectEntitiesToSurfacesAlongClosestPoints(entities, surfaces, discretization, project_ends,
fill_gaps, duplicate)
Description
Project a set of points, lines, curves, and/or edges to 1 or more trimmed and/or untrimmed surfaces. A
closest point projection algorithm is used to place the entities of the input surfaces.
Back to Top

GGeometry Scripting - Splitting/Joining Operations


The following scripting functions may be used to split lines, curves, and surfaces at a point or their parametric
space. Each of these functions is part of the GGeometry Python module in CFD-GEOM. To use these functions,
you must first import the functions with an "import GGeometry" call at the top of your Python script.

GGeometry.SplitLineOrCurve(crv, param)

GGeometry.SplitSurface(srf, u_param, v_param)

GGeometry.SplitLinesAndCurvesAtPoints(crvs, points)

GGeometry.CreateIsoCurvesAtPointOnSurface(srf, point)

GGeometry.SplitSurfaceAtPoint(srf, point)

GGeometry.SplitCurvesAtPlane(crvs, ox, oy, oz, nx, ny, nz)

423
CFD-GEOM V2014.0 User Manual

GGeometry.SplitCurvesAtMajorPlane(crvs, plane, depth)

GGeometry.SplitCurvesAtMajorPlaneThroughPoint(crvs, plane, pt)

GGeometry.SplitCurvesAtConstructionPlane(crvs)

GGeometry.CreatePointsWhereCurvesIntersectPlane(crvs, ox, oy, oz, nx, ny, nz)

GGeometry.CreatePointsWhereCurvesIntersectMajorPlane(crvs, plane, depth)

GGeometry.CreatePointsWhereCurvesIntersectMajorPlaneThroughPoint(crvs, plane, pt)

GGeometry.CreatePointsWhereCurvesIntersectConstructionPlane(crvs)

GGeometry.JoinCurves(crvs)

GGeometry.JoinSurfaces(srfs)

GGeometry.SplitLineOrCurve

Prototype
GGeometry.SplitLineOrCurve(crv, param)
Description
Split a line or curve entity at the specified parameter value. "param" must be in the range (0,1).
Back to Top

GGeometry.SplitSurface

Prototype
GGeometry.SplitSurface(srf, u_param, v_param)
Description
Split a surface (trimmed or untrimmed) at the specified U and V parameter values. Both parameters must
be in the range [0,1]. However, at least one of the parameters must be other than 0 or 1.
Please note the following behaviors/restrictions for trimmed Surface entities:
1. If both U and V values are outside the surface boundaries, splitting will not be performed.
2. If either U or V values are inside the surface boundaries, either 2 or 4 new surfaces will usually be created
during a split. However, depending upon the shape of the surrounding trimming curves, 3, 5 or more
surfaces may be created.
3. Surfaces used in the construction of semi-structured domains can not be split. Otherwise, all higher-level
entities derived from the surface (such as Shells) will be automatically updated, and the original surface
will be deleted.
Please note the following behaviors/restrictions for Untrimmed Surface entities:
1. If both U and V values lie on the boundaries of the untrimmed surface, splitting will not be performed.
2. If either U or V (but not both) values lie on the surface boundary, 2 surfaces will be created during a split.
If neither lies on the surface boundaries, 4 new surfaces will be created. In either case, the original surface
will be deleted, and any higher-level entities (such as Faces that were projected to the surface) will be
updated.
3. Untrimmed Surfaces used in the construction of Trimmed Surface entities can not be split.

424
CFD-GEOM Scripting

Upon success, this function returns a handle to the newly created surfaces. If splitting a trimmed surface,
this handle will also contain any lower-level entities (such as lines/curves) created as a result of the
splitting of the trimming curves on the original surface.
Back to Top

GGeometry.SplitLinesAndCurvesAtPoints

Prototype
GGeometry.SplitLinesAndCurvesAtPoints(crvs, points)
Description
Split 1 or more lines/curves at the specified point entities. Where a point does not lie on a line/curve, a
projected (closest point) copy of the point is created on the line/curve and that entity is split at that point
(except when the new point is coincident with the line/curve start or end point).
Back to Top

GGeometry.CreateIsoCurvesAtPointOnSurface

Prototype
GGeometry.CreateIsoCurvesAtPointOnSurface(srf, point)
Description
Create iso-curves passing through a point on a surface.
Back to Top

GGeometry.SplitSurfaceAtPoint

Prototype
GGeometry.SplitSurfaceAtPoint(srf, point)
Description
Split a surface at a point. Note that this routine does not currently support the splitting of trimmed
surfaces.
Back to Top

GGeometry.SplitCurvesAtPlane

Prototype
GGeometry.SplitCurvesAtPlane(crvs, ox, oy, oz, nx, ny, nz)
Description
Split lines/curves at a plane defined by an origin (ox, oy, oz) and plane normal (nx, ny, nz). Note that
splitting via this type of input is currently available only from scripting (there's no corresponding
mechanism in the GEOM GUI).
Back to Top

GGeometry.SplitCurvesAtMajorPlane

Prototype
GGeometry.SplitCurvesAtMajorPlane(crvs, plane, depth)
Description

425
CFD-GEOM V2014.0 User Manual

Split lines/curves at one of the major planes. "plane" is an integer specifying the plane (1-XY, 2-YZ, 3-XZ).
"depth" specifies the position of the plane. For example, a plane value of 1 and a depth of 5 specifies a
plane parallel to the XY plane and passing through Z=5.
Back to Top

GGeometry.SplitCurvesAtMajorPlaneThroughPoint

Prototype
GGeometry.SplitCurvesAtMajorPlaneThroughPoint(crvs, plane, pt)
Description
Split lines/curves at one of the major planes. "plane" is an integer specifying the plane (1-XY, 2-YZ, 3-XZ).
"pt" is a point entity through which the plane passes.
Back to Top

GGeometry.SplitCurvesAtConstructionPlane

Prototype
GGeometry.SplitCurvesAtConstructionPlane(crvs)
Description
Split lines/curves at the current construction plane.
Back to Top

GGeometry.CreatePointsWhereCurvesIntersectPlane

Prototype
GGeometry.CreatePointsWhereCurvesIntersectPlane(crvs, ox, oy, oz, nx, ny, nz)
Description
Create points where lines/curves intersect a plane defined by an origin (ox, oy, oz) and plane normal (nx,
ny, nz). Note that creating points via this type of input is currently available only from scripting (there's no
corresponding mechanism in the GEOM GUI).
Back to Top

GGeometry.CreatePointsWhereCurvesIntersectMajorPlane

Prototype
GGeometry.CreatePointsWhereCurvesIntersectMajorPlane(crvs, plane, depth)
Description
Create points where lines/curves intersect one of the major planes. "plane" is an integer specifying the
plane (1-XY, 2-YZ, 3-XZ). "depth" specifies the position of the plane. For example, a plane value of 1 and a
depth of 5 specifies a plane parallel to the XY plane and passing through Z=5.
Back to Top

GGeometry.CreatePointsWhereCurvesIntersectMajorPlaneThroughPoint

Prototype
GGeometry.CreatePointsWhereCurvesIntersectMajorPlaneThroughPoint(crvs, plane, pt)
Description

426
CFD-GEOM Scripting

Create points where lines/curves intersect one of the major planes. "plane" is an integer specifying the
plane (1-XY, 2-YZ, 3-XZ). "pt" is a point entity through which the plane passes.
Back to Top

GGeometry.CreatePointsWhereCurvesIntersectConstructionPlane

Prototype
GGeometry.CreatePointsWhereCurvesIntersectConstructionPlane(crvs)
Description
Create points where lines/curves intersect the current construction plane.
Back to Top

GGeometry.JoinCurves

Prototype
GGeometry.JoinCurves(crvs)
Description
Create a single curve by joining the specified lines/curves.
Back to Top

GGeometry.JoinSurfaces

Prototype
GGeometry.JoinSurfaces(srfs)
Description
Create a single trimmed surface by joining the specified trimmed surfaces. Note the following constraints:
1. The input surfaces must be properly connected. By traversing trimming lines/curves, every surface must
be reachable from every other surface in the input set. Moreover, the collection must not contain any
branches. In other words, it should not be possible to "walk" from one surface to 2 or more adjacent
surfaces through a single trimming curve.
2. Exactly the same set of child (higher-level) entities must be derived from them. For example, CFD-GEOM
will not join surfaces that don't form the boundaries of exactly the same set of shells.
3. Surfaces used in the construction of semi-structured domains can not be joined.
CFD-GEOM must be able to cover the input surfaces with a single surface. In a planar collection of
surfaces, this is always possible. However, in non-planar collections, this is not always possible.
Improvements to this capability will be added in future releases.
Upon success, this function returns a handle to the newly created surface. The original surfaces are
deleted and any attached topology/mesh systems are updated.
Back to Top

427
CFD-GEOM V2014.0 User Manual

GGeometry Scripting - Intersection Operations


The following scripting functions may be used to intersect entities. Each of these functions is part of the
GGeometry Python module in CFD-GEOM. To use these functions, you must first import the functions with an
"import GGeometry" call at the top of your Python script.

GGeometry.IntersectEntities(ent1, ent2, trim_curves)

GGeometry.IntersectEntitySets(ents1, ents2)

GGeometry.CreateCurvesWhereSurfacesIntersectPlane(surfaces, ox, oy, oz, nx, ny, nz)

GGeometry.CreateCurvesWhereSurfacesIntersectMajorPlane(surfaces, plane, depth)

GGeometry.CreateCurvesWhereSurfacesIntersectMajorPlaneThroughPoint(surfaces, plane, pt)

GGeometry.CreateCurvesWhereSurfacesIntersectConstructionPlane(surfaces)

GGeometry.ExtendLinesToIntersection(line1, line2)

GGeometry.IntersectEntities

Prototype
GGeometry.IntersectEntities(ent1, ent2, trim_curves)
Description
Create entities at the intersections of 2 entities ent1 and ent2. These entities (ent1 and ent2) can be
lines/curves/surfaces. If either entity is a line/curve, and if "trim_curves" is 1 (TRUE), these entities are
split at the points of intersection.
Back to Top

GGeometry.IntersectEntitySets

Prototype
GGeometry.IntersectEntitySets(ents1, ents2)
Description
Create entities at the intersections of 2 entity sets ents1 and ents2. These entity sets (ents1 and ents2)
can contain lines/curves/surfaces.
Back to Top

GGeometry.CreateCurvesWhereSurfacesIntersectPlane

Prototype
GGeometry.CreateCurvesWhereSurfacesIntersectPlane(surfaces, ox, oy, oz, nx, ny, nz)
Description
Create curves where surfaces intersect a plane defined by an origin (ox, oy, oz) and plane normal (nx, ny,
nz). Note that creating curves via this type of input is currently available only from scripting (there's no
corresponding mechanism in the GEOM GUI).
Back to Top

428
CFD-GEOM Scripting

GGeometry.CreateCurvesWhereSurfacesIntersectMajorPlane

Prototype
GGeometry.CreateCurvesWhereSurfacesIntersectMajorPlane(surfaces, plane, depth)
Description
Create curves where surfaces intersect one of the major planes. "plane" is an integer specifying the plane
(1-XY, 2-YZ, 3-XZ). "depth" specifies the position of the plane. For example, a plane value of 1 and a depth
of 5 specifies a plane parallel to the XY plane and passing through Z=5.
Back to Top

GGeometry.CreateCurvesWhereSurfacesIntersectMajorPlaneThroughPoint

Prototype
GGeometry.CreateCurvesWhereSurfacesIntersectMajorPlaneThroughPoint(surfaces, plane, pt)
Description
Create curves where surfaces intersect one of the major planes. "plane" is an integer specifying the plane
(1-XY, 2-YZ, 3-XZ). "pt" is a point entity through which the plane passes.
Back to Top

GGeometry.CreateCurvesWhereSurfacesIntersectConstructionPlane

Prototype
GGeometry.CreateCurvesWhereSurfacesIntersectConstructionPlane(surfaces)
Description
Create curves where surfaces intersect the current construction plane.
Back to Top

GGeometry.ExtendLinesToIntersection

Prototype
GGeometry.ExtendLinesToIntersection(line1, line2)
Description
Extend 2 coplanar, non-parallel lines to their intersection.
Back to Top

GGeometry Scripting - Construction Plane Operations


The following scripting functions may be used to set the construction plane in CFD-GEOM. Each of these functions
is part of the GGeometry Python module in CFD-GEOM. To use these functions, you must first import the
functions with an "import GGeometry" call at the top of your Python script.

GGeometry.SetCurrentCPlaneDrawingParameters(step_size=1, num_increments=20, snap=0)

GGeometry.SetCurrentCPlane(x, y, z, dx, dy, dz, step_size=1, num_increments=20, snap=0)

GGeometry.SetCurrentCPlaneFromMajorPlane(plane, depth, step_size=1, num_increments=20, snap=0)

429
CFD-GEOM V2014.0 User Manual

GGeometry.SetCurrentCPlaneFromMajorPlaneThroughPoint(plane, pt, step_size=1, num_increments=20, snap=0)

GGeometry.SetCurrentCPlaneFromLineOrCurve(crv, param, step_size=1, num_increments=20, snap=0)

GGeometry.SetCurrentCPlaneFrom3Points(p1, p2, p3, step_size=1, num_increments=20, snap=0)

GGeometry.SetCurrentCPlaneFromPointAndNormal(pt, dx, dy, dz, step_size=1, num_increments=20, snap=0)

GGeometry.SetCurrentCPlaneDrawingParameters

Prototype
GGeometry.SetCurrentCPlaneDrawingParameters(step_size=1, num_increments=20, snap=0)
Description
Set only the drawing and snap properties on the current construction plane.

"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),
indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

GGeometry.SetCurrentCPlane

Prototype
GGeometry.SetCurrentCPlane(x, y, z, dx, dy, dz, step_size=1, num_increments=20, snap=0)
Description
Set the current construction plane to pass through the given point (x, y, z) and with a plane normal (dx,
dy, dz). Note that this capability is available only through scripting (it's not in the CFD-GEOM GUI).
"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),
indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

GGeometry.SetCurrentCPlaneFromMajorPlane

Prototype
GGeometry.SetCurrentCPlaneFromMajorPlane(plane, depth, step_size=1, num_increments=20, snap=0)
Description
Set the current construction plane to be parallel to one of the major planes. "plane" is an integer
specifying the plane (1-XY, 2-YZ, 3-XZ). "depth" specifies the position of the plane. For example, a plane
value of 1 and a depth of 5 specifies a plane parallel to the XY plane and passing through Z=5.
"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),

430
CFD-GEOM Scripting

indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

GGeometry.SetCurrentCPlaneFromMajorPlaneThroughPoint

Prototype
GGeometry.SetCurrentCPlaneFromMajorPlaneThroughPoint(plane, pt, step_size=1, num_increments=20,
snap=0)
Description
Set the current construction plane to be parallel to one of the major planes. "plane" is an integer
specifying the plane (1-XY, 2-YZ, 3-XZ). "pt" is a point entity through which the plane passes.
"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),
indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

GGeometry.SetCurrentCPlaneFromLineOrCurve

Prototype
GGeometry.SetCurrentCPlaneFromLineOrCurve(crv, param, step_size=1, num_increments=20, snap=0)
Description
Set the current construction plane to pass through a point on a line or curve. The point is specified as a
parameter (in the range [0,1]) in the line/curve parameter space. The plane will be normal to the
line/curve tangent at that point.
"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),
indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

GGeometry.SetCurrentCPlaneFrom3Points

Prototype
GGeometry.SetCurrentCPlaneFrom3Points(p1, p2, p3, step_size=1, num_increments=20, snap=0)
Description
Set the current construction plane from 3 non-colinear point entities.
"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),
indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

431
CFD-GEOM V2014.0 User Manual

GGeometry.SetCurrentCPlaneFromPointAndNormal

Prototype
GGeometry.SetCurrentCPlaneFromPointAndNormal(pt, dx, dy, dz, step_size=1, num_increments=20,
snap=0)
Description
Set the current construction plane to pass through the given point and with a plane normal (dx, dy, dz).
"step_size" controls the width and height of each grid cell. "num_increments" controls the number of grid
cells to draw to the left, right, top, and bottom of the construction plane origin. "snap", if set to 1 (TRUE),
indicates that when creating a point via screen click, the point will be snapped to the nearest construction
plane grid point. Note that these parameters affect only graphical attributes of the construction plane and
do not affect geometrical operations (during the script run) that are based on the construction plane.
Back to Top

Mesh Scripting Functions

GMesh Scripting - Edge Options


GMesh.CreatePowerLawEdge(crvs, num_grid_points, power, direction)

GMesh.CreatePowerLawEdgeFromPoints(points, create_one_curve, closed, num_grid_points, power, direction)

GMesh.CreateHyptanEdge(crvs, num_grid_points, use_normalized_spacing, ds1, ds2)

GMesh.CreateHyptanEdgeFromPoints(points, create_one_curve, closed, num_grid_points,


use_normalized_spacing, ds1, ds2)

GMesh.CreateGeometricEdge(crvs, num_grid_points, tfactor, direction)

GMesh.CreateGeometricEdgeFromPoints(points, create_one_curve, closed, num_grid_points, tfactor, direction)

GMesh.CreateEdgeFromParameterList(crvs, params)

GMesh.SetPowerLawEdge(edge, num_grid_points, power, direction)

GMesh.SetHyptanEdge(edge, num_grid_points, use_normalized_spacing, ds1, ds2)

GMesh.SetGeometricEdge(edge, num_grid_points, tfactor, direction)

GMesh.SetGeneralEdge(edge, value)

GMesh.CreateAllPowerLawEdges(crvs, num_grid_points, power, direction)

GMesh.CreateAllHyptanEdges(crvs, num_grid_points, use_normalized_spacing, ds1, ds2)

GMesh.CreateAllGeometricEdges(crvs, num_grid_points, tfactor, direction)

432
CFD-GEOM Scripting

GMesh.CreateEdgeLinkingGroup(edges, link_types, reversals)

GMesh.ModifyEdgeLinkingGroup(group, edges, link_types, reversals)

GMesh.RemoveEdgesFromEdgeLinkingGroups(edges)

GMesh.ReplaceEdgeGeometry(edge, crvs)

GMesh.SplitEdgeAtGridPoint(edge, index)

GMesh.SplitEdgeAtPointEntities(edge, points)

GMesh.JoinEdges(edges)

GMesh.CopyEdgeEndSpacingToAdjacentEdges(edge, target_edges, refpt=0)

GMesh.CopyEdgeGridParametersToEntities(edge, target_entities, copy_numpts, copy_dist)

GMesh.CreateCompositeEdge(edges)

GMesh.CreateCompositeEdges(edges)

GMesh.CreatePowerLawEdge

Prototype
GMesh.CreatePowerLawEdge(crvs, num_grid_points, power, direction)
Description
Create a power law edge across the input lines/curves. "direction" must be 1-forward, 2-backward, or 3-
symmetric.
Back to Top

GMesh.CreatePowerLawEdgeFromPoints

Prototype
GMesh.CreatePowerLawEdgeFromPoints(points, create_one_curve, closed, num_grid_points, power,
direction)
Description
Create power law edge(s) across the input points. Input is as follows:
create_one_curve, closed (both options are ignored if <3 point entities are specified):
0, 0 - create a line (and edge) between the first and second point, another between the second
and third point, etc.
0, 1 - same as 0,0 except that an additional line and edge is created between the last and first
point.
1, 0 - interpolate a single curve/edge through the input points
1, 1 - same as 1,0 except that the curve/edge is wrapped back around to the first point (i.e. a
closed curve/edge is created).
num_grid_points: the number of grid points to use on each new edge

433
CFD-GEOM V2014.0 User Manual

power: power factor; must be >= 1.0


direction: must be 1-forward, 2-backward, or 3-symmetric
Back to Top

GMesh.CreateHyptanEdge

Prototype
GMesh.CreateHyptanEdge(crvs, num_grid_points, use_normalized_spacing, ds1, ds2)
Description
Create an edge with a hyperbolic tangent distribution across the input lines/curves. If
use_normalized_spacing is 0 (FALSE), ds1 and ds2 are interpreted as absolute endpoint spacings. If 1
(TRUE), ds1 and ds2 are interpreted as normalized end point spacings and must be in the range [0,1].
Back to Top

GMesh.CreateHyptanEdgeFromPoints

Prototype
GMesh.CreateHyptanEdgeFromPoints(points, create_one_curve, closed, num_grid_points,
use_normalized_spacing, ds1, ds2)
Description
Create edge(s) with hyperbolic tangent distributions across the input points. Input is as follows:
create_one_curve, closed (both options are ignored if <3 point entities are specified):
0, 0 - create a line (and edge) between the first and second point, another between the second
and third point, etc.
0, 1 - same as 0,0 except that an additional line and edge is created between the last and first
point.
1, 0 - interpolate a single curve/edge through the input points
1, 1 - same as 1,0 except that the curve/edge is wrapped back around to the first point (i.e. a
closed curve/edge is created).
num_grid_points: the number of grid points to use on each new edge
use_normalized_spacing: if 0 (FALSE), ds1 and ds2 are interpreted as absolute endpoint spacings. If 1
(TRUE), ds1 and ds2 are interpreted as ormalized end point spacings and must be in the range [0,1].
ds1, ds2: the endpoint spacings at the edge start and end points, respectively.
Back to Top

GMesh.CreateGeometricEdge

Prototype
GMesh.CreateGeometricEdge(crvs, num_grid_points, tfactor, direction)
Description
Create an edge with a geometric distribution across the input lines/curves. "direction" must be 1-forward,
2-backward, or 3-symmetric.
Back to Top

434
CFD-GEOM Scripting

GMesh.CreateGeometricEdgeFromPoints

Prototype
GMesh.CreateGeometricEdgeFromPoints(points, create_one_curve, closed, num_grid_points, tfactor,
direction)
Description
Create edge(s) with a geometric distribution across the input points.
Input is as follows:
create_one_curve, closed (both options are ignored if <3 point entities are specified):
0, 0 - create a line (and edge) between the first and second point, another between the second
and third point, etc.
0, 1 - same as 0,0 except that an additional line and edge is created between the last and first
point.
1, 0 - interpolate a single curve/edge through the input points
1, 1 - same as 1,0 except that the curve/edge is wrapped back around to the first point (i.e. a
closed curve/edge is created).
num_grid_points: the number of grid points to use on each new edge
tfactor: transition factor; must be >= 1.0
direction: must be 1-forward, 2-backward, or 3-symmetric
Back to Top

GMesh.CreateEdgeFromParameterList

Prototype
GMesh.CreateEdgeFromParameterList(crvs, params)
Description
Create an edge with a general distribution across the input lines/curves. The input entities must form a
properly connected set. "params" must contain a strictly increasing set of parameters starting with 0and
ending with 1. These values essentially represent a percentage of total arc length at which the grid points
are to be positioned. Note that this capability is not currently available in any tool in the CFD-GEOM GUI.
The number of grid points to use is implied by the number of specified parameters.
Back to Top

GMesh.SetPowerLawEdge

Prototype
GMesh.SetPowerLawEdge(edge, num_grid_points, power, direction)
Description
Assign a power-law distribution to the specified edge. "direction" must be 1-forward, 2-backward, or 3-
symmetric
Back to Top

GMesh.SetHyptanEdge

Prototype
GMesh.SetHyptanEdge(edge, num_grid_points, use_normalized_spacing, ds1, ds2)

435
CFD-GEOM V2014.0 User Manual

Description
Assign a hyperbolic tangent distribution to the input edge. If use_normalized_spacing is 0 (FALSE), ds1 and
ds2 are interpreted as absolute endpoint spacings. If 1 (TRUE), ds1 and ds2 are interpreted as normalized
end point spacings and must be in the range [0,1].
Back to Top

GMesh.SetGeometricEdge

Prototype
GMesh.SetGeometricEdge(edge, num_grid_points, tfactor, direction)
Description
Assign a geometric distribution to the specified edge. "direction" must be 1-forward, 2-backward, or 3-
symmetric
Back to Top

GMesh.SetGeneralEdge

Prototype
GMesh.SetGeneralEdge(edge, value)
Description
Assign a general distribution to the specified edge and update (where possible) any attached grid
systems. Input is as follows:
edge: a regular edge (i.e. not a composite edge)
value: this can have one of 2 meanings. If a single integer is specified, it is interpreted as
the number of grid points to use on the edge. New parameters will be interpolated from
the edge's current list of parameter values (or current grid points if the edge has a basic
distribution type). If a list of REAL's is specified, they are interpreted as parameter values
in the edges parameter space at which grid points are to be positioned (see
CreateEdgeFromParameterList).
Note that, in the CFD-GEOM edge editor, one can not explicitly change an edge's distribution
type from one of the basic types (power law, hyperbolic tangent, geometric) to a general
distribution type. There, one can only change the number of grid points on an edge that already
has a general distribution type. When we journal this action, "value" will be set to the new
number of grid points. If you're writing a script from scratch, this function gives you the ability to
convert from a basic distribution type as well as to define the new parameters.
Back to Top

GMesh.CreateAllPowerLawEdges

Prototype
GMesh.CreateAllPowerLawEdges(crvs, num_grid_points, power, direction)
Description
Create a power law edge on each of the input lines/curves that does not already have an associated edge.
If "crvs" is empty, GEOM performs this action on all such lines/curves in the model. "direction" must be 1-
forward, 2-backward, or 3-symmetric
Back to Top

436
CFD-GEOM Scripting

GMesh.CreateAllHyptanEdges

Prototype
GMesh.CreateAllHyptanEdges(crvs, num_grid_points, use_normalized_spacing, ds1, ds2)
Description
Create a hyptan edge on each of the input lines/curves that does not already have an associated edge. If
"crvs" is empty, GEOM performs this action on all such lines/curves in the model. If
use_normalized_spacing is 0 (FALSE), ds1 and ds2 are interpreted as absolute endpoint spacings. If 1
(TRUE), ds1 and ds2 are interpreted as normalized end point spacings and must be in the range [0,1].
Back to Top

GMesh.CreateAllGeometricEdges

Prototype
GMesh.CreateAllGeometricEdges(crvs, num_grid_points, tfactor, direction)
Description
Create an edge with a geometric distribution on each of the input lines/curves that does not already have
an associated edge. If "crvs" is empty, GEOM performs this action on all such lines/curves in the model.
"direction" must be 1-forward, 2-backward, or 3-symmetric.
Back to Top

GMesh.CreateEdgeLinkingGroup

Prototype
GMesh.CreateEdgeLinkingGroup(edges, link_types, reversals)
Description
Create an edge linking group from the given set of edges, link types, and reversals. Note that the number
of link types and reversals must equal the number of edges, and "edges" must contain at least 2 non-
composite edges, the first of which is the master edge.
link_types must be a python list and can contain the following values:
0 - this is a special link type that can only be applied to the master edge, and the master edge must
have this link type
1 - the corresponding edge will always have the same number of grid points and distribution
parameters as the master
2 - the corresponding edge will always have the same number of grid points as the master, but will
maintain independent distribution parameters.
3 - the corresponding edge edge will always have the same distribution parameters as the master,
but it's number of grid points will be independent of the master.
reversals must be a python list and can contain the following values:
1 - the corresponding edge's distribution is always reversed from that of the master.
0 - otherwise
Back to Top

GMesh.ModifyEdgeLinkingGroup

Prototype

437
CFD-GEOM V2014.0 User Manual

GMesh.ModifyEdgeLinkingGroup(group, edges, link_types, reversals)


Description
Modify the linkage info for the specified edges in the specified edge linking group. "link_types" and
"reversals" have the same meaning and rules as in CreateEdgeLinkingGroup. Note that those edges that
don't currently belong to group are added (unless they're part of another link group, in which case an
error is thrown).
Back to Top

GMesh.RemoveEdgesFromEdgeLinkingGroups

Prototype
GMesh.RemoveEdgesFromEdgeLinkingGroups(edges)
Description
Remove the specified edges from the link groups to which they belong. Any edge that doesn't belong to a
link group is ignored.
Back to Top

GMesh.ReplaceEdgeGeometry

Prototype
GMesh.ReplaceEdgeGeometry(edge, crvs)
Description
Replace an edge's lines/curves with another set of lines/curves. The new set must have the same
endpoints as the original.
Back to Top

GMesh.SplitEdgeAtGridPoint

Prototype
GMesh.SplitEdgeAtGridPoint(edge, index)
Description
Split an edge at one of its grid points. Note that indexing starts at 1 (i.e. the start point is at index 1).
Splitting at the start and end points doesn't make sense and is not permissible.
Back to Top

GMesh.SplitEdgeAtPointEntities

Prototype
GMesh.SplitEdgeAtPointEntities(edge, points)
Description
Split an edge at one or more endpoints of its constituent lines/curves.
Back to Top

GMesh.JoinEdges

Prototype
GMesh.JoinEdges(edges)

438
CFD-GEOM Scripting

Description
Create a single edge by joining the specified edges.
Back to Top

GMesh.CopyEdgeEndSpacingToAdjacentEdges

Prototype
GMesh.CopyEdgeEndSpacingToAdjacentEdges(edge, target_edges, refpt=0)
Description
Copy an edge's spacing at one of its endpoints to edges incident at that endpoint. Note that "refpt" should
not normally be specified because the endpoint is usually implied by the connectivity between the source
and target edges. However, if "edge" and any of the target edges share 2 distinct end points, "refpt" must
specify which of "edge"'s endpoints to use. Note that this operation does not support closed edges. Note
also that the distribution type of the target edges will normally be converted to hyperbolic tangent.
Back to Top

GMesh.CopyEdgeGridParametersToEntities

Prototype
GMesh.CopyEdgeGridParametersToEntities(edge, target_entities, copy_numpts, copy_dist)
Description
Copy an edge's grid parameters onto other edges and/or lines/curves (which creates edges on those
lines/curves).
Back to Top

GMesh.CreateCompositeEdge

Prototype
GMesh.CreateCompositeEdge(edges)
Description
Create a composite edge from the input edges.
Back to Top

GMesh.CreateCompositeEdges

Prototype
GMesh.CreateCompositeEdges(edges)
Description
Create multiple composite edges from the set of input simple edges. The strategy followed here is to use
as many of the edges as possible while creating the smallest number of composite edges.
Back to Top

439
CFD-GEOM V2014.0 User Manual

GMesh Scripting - Structured Face Options


GMesh.CreateFace(*edgesets)

GMesh.CreateExtrudedFaces(profile_edges, dx, dy, dz, distance_multiplier, numpts, numtimes,


link_extrusion_edges, link_translated_edges)

GMesh.CreateExtrudedFacesAlongEdges(profile_edges, path_edges, numtimes, link_extrusion_edges,


link_translated_edges)

GMesh.CreateExtrudedFacesAlongLines(profile_edges, path_lines, numpts, numtimes, link_extrusion_edges,


link_translated_edges)

GMesh.CreateExtrudedFacesAlongPoints(profile_edges, path_points, num_grid_points, numtimes,


link_extrusion_edges, link_translated_edges)

GMesh.CreateRevolvedFaces(profile_edges, sx, sy, sz, dx, dy, dz, angle, numpts, numtimes, link_revolution_edges,
link_rotated_edges)

GMesh.CreateRevolvedFacesAboutLine(profile_edges, line, angle, numpts, numtimes, link_revolution_edges,


link_rotated_edges)

GMesh.CreateRevolvedFacesAboutPoints(profile_edges, spt, ept, angle, numpts, numtimes,


link_revolution_edges, link_rotated_edges)

GMesh.CreateRevolvedFacesAbout3Points(profile_edges, cpt, spt, ept, numpts, numtimes, link_revolution_edges,


link_rotated_edges)

GMesh.CreateRevolvedFacesAboutPointAndVector(profile_edges, spt, dx, dy, dz, angle, numpts, numtimes,


link_revolution_edges, link_rotated_edges)

GMesh.CreateSweptFaces(profile_edges, path_crvs, numpts, nsections, use_fixed_orientation, reverse,


projection_type, scaling, link_swept_edges, link_opposite_edges)

GMesh.CreateSweptFacesWithTwistVector(profile_edges, path_crvs, use_fixed_orientation, dx, dy, dz, reverse,


scaling, numpts, nsections, projection_type, link_swept_edges, link_opposite_edges)

GMesh.SmoothFace(face, numiter, edges=0, bcs=0, spacings=0)

GMesh.ProjectFacesToSurfaces(faces, surfaces, projection_type)

GMesh.UnProjectFaces(faces, surfaces)

GMesh.CreateAllFaces(edges, allow_4_sided, allow_2_sided)

GMesh.SplitFace(face, i, j)

GMesh.JoinFaces(faces)

GMesh.CreateButterflyFaces(e1, e2, e3, e4, r1, r2, num_radial_grid_pts)

CreateAllDomains(surfaces_and_faces)

440
CFD-GEOM Scripting

CreateAllDomains2(surfaces_and_faces)

CreateShell(surfaces_and_faces)

CreateDomain(shells)

AddBafflesToDomain(domain, srfs)

RemoveBafflesFromDomain(domain, srfs)

GMesh.CreateFace

Prototype
GMesh.CreateFace(*edgesets)
Description
Create a face from 2, 3, or 4 sets of edges and/or composite edges.
Back to Top

GMesh.CreateExtrudedFaces

Prototype
GMesh.CreateExtrudedFaces(profile_edges, dx, dy, dz, distance_multiplier, numpts, numtimes,
link_extrusion_edges, link_translated_edges)
Description
Create faces by extruding profile edges in a direction specified by a vector. Note that the vector (dx, dy,
dz) is not normalized by this routine. Hence, the total extrusion distances in X, Y, and Z are
dx*distance_multiplier, dy*distance_multiplier, and dz*distance_multipler.
Back to Top

GMesh.CreateExtrudedFacesAlongEdges

Prototype
GMesh.CreateExtrudedFacesAlongEdges(profile_edges, path_edges, numtimes, link_extrusion_edges,
link_translated_edges)
Description
Create faces by extruding profile edges along a set of one or more path edges. The direction, distance,
and number of grid points is implied by the path edges. Note that the path edges must form a non-
closed, connected set. Moreover, one of the path edge set endpoints must also be an endpoint of at least
one profile edge.
Back to Top

GMesh.CreateExtrudedFacesAlongLines

Prototype
GMesh.CreateExtrudedFacesAlongLines(profile_edges, path_lines, numpts, numtimes,
link_extrusion_edges, link_translated_edges)
Description

441
CFD-GEOM V2014.0 User Manual

Create faces by extruding profile edges along a set of one or more path lines. The direction and distance is
implied by the path lines. Note that the lines must form a non-closed, connected set. Moreover, one of
the line set endpoints must also be an endpoint of at least one profile edge.
Back to Top

GMesh.CreateExtrudedFacesAlongPoints

Prototype
GMesh.CreateExtrudedFacesAlongPoints(profile_edges, path_points, num_grid_points, numtimes,
link_extrusion_edges, link_translated_edges)
Description
Create faces by extruding profile edges along a path defined by two or more points. The direction and
distance is implied by the points.
Back to Top

GMesh.CreateRevolvedFaces

Prototype
GMesh.CreateRevolvedFaces(profile_edges, sx, sy, sz, dx, dy, dz, angle, numpts, numtimes,
link_revolution_edges, link_rotated_edges)
Description
Create faces by revolving profile edges about an axis defined by a set of start point coordinates and a
vector. The input angle is assumed to be in degrees.
Back to Top

GMesh.CreateRevolvedFacesAboutLine

Prototype
GMesh.CreateRevolvedFacesAboutLine(profile_edges, line, angle, numpts, numtimes,
link_revolution_edges, link_rotated_edges)
Description
Create faces by revolving profile edges about an axis defined by a line entity. The input angle is assumed
to be in degrees.
Back to Top

GMesh.CreateRevolvedFacesAboutPoints

Prototype
GMesh.CreateRevolvedFacesAboutPoints(profile_edges, spt, ept, angle, numpts, numtimes,
link_revolution_edges, link_rotated_edges)
Description
Create faces by revolving profile edges about an axis defined by 2 point entities. The input angle is
assumed to be in degrees.
Back to Top

GMesh.CreateRevolvedFacesAbout3Points

Prototype

442
CFD-GEOM Scripting

GMesh.CreateRevolvedFacesAbout3Points(profile_edges, cpt, spt, ept, numpts, numtimes,


link_revolution_edges, link_rotated_edges)
Description
Create faces by revolving profile edges about an axis defined by 3 point entities. cpt represents a point on
the rotation axis. The axis direction is defined by the normal to the plane containing cpt, spt, and ept. The
angle is implied by the angle between the vectors cpt->spt and cpt->ept.
Back to Top

GMesh.CreateRevolvedFacesAboutPointAndVector

Prototype
GMesh.CreateRevolvedFacesAboutPointAndVector(profile_edges, spt, dx, dy, dz, angle, numpts,
numtimes, link_revolution_edges, link_rotated_edges)
Description
Create faces by revolving profile edges about an axis defined by a point entity and a vector. The input
angle is assumed to be in degrees.
Back to Top

GMesh.CreateSweptFaces

Prototype
GMesh.CreateSweptFaces(profile_edges, path_crvs, numpts, nsections, use_fixed_orientation, reverse,
projection_type, scaling, link_swept_edges, link_opposite_edges)
Description
Create faces by sweeping profile edges along a set of path curves.
Back to Top

GMesh.CreateSweptFacesWithTwistVector

Prototype
GMesh.CreateSweptFacesWithTwistVector(profile_edges, path_crvs, use_fixed_orientation, dx, dy, dz,
reverse, scaling, numpts, nsections, projection_type, link_swept_edges, link_opposite_edges)
Description
Create faces by sweeping profile edges along a set of path curves.
Back to Top

GMesh.SmoothFace

Prototype
GMesh.SmoothFace(face, numiter, edges=0, bcs=0, spacings=0)
Description
Elliptically smooth a face with the specified number of iterations (a value of 0 unsmooths the face). If
edges and bcs are non-NULL, apply the elliptic boundary conditions in bcs to the corresponding edges. If
any of the bcs is an ortho + spacing bc, apply the specified spacings to the corresponding edges. Here are
the rules:
* If edges is non-NULL, then so must bcs be non-NULL, and both must be of the same length.

443
CFD-GEOM V2014.0 User Manual

* If bcs contains an ortho+spacing bc, then spacings must be present and have a length equal to bcs. A
spacing of 0 means that spacings are allowed to float.
* Any input edges that aren't used by the face are silently ignored.
Valid elliptic bc values are
0 - fixed
1 - ortho
2 - ortho + spacing
Back to Top

GMesh.ProjectFacesToSurfaces

Prototype
GMesh.ProjectFacesToSurfaces(faces, surfaces, projection_type)
Description
Project the specified faces to the specified trimmmed and/or untrimmed surfaces. projection type can be
1 (use closest point projection) or 0 (project along face normals).
Back to Top

GMesh.UnProjectFaces

Prototype
GMesh.UnProjectFaces(faces, surfaces)
Description
Unproject the specified faces from the specified surfaces.
Back to Top

GMesh.CreateAllFaces

Prototype
GMesh.CreateAllFaces(edges, allow_4_sided, allow_2_sided)
Description
Create 1 or more faces from the input edges. If allow_4_sided is 1 (TRUE), CFD-GEOM will construct a 4-
sided face from each topologically valid 4-edge combination in "edges". If allow_2_sided, CFD-GEOM will
construct a 2-sided face from each topologically valid 2-edge combination in "edges". Note that you may
specify an empty list for "edges". In this case, all edges in the model will be used (except for edges upon
which composite edges have been constructed).
Note that automatic construction of 3-sided faces is not supported by this routine. The reason is that such
support would require additional input specifying where the degeneracy should be placed.
Back to Top

GMesh.SplitFace

Prototype
GMesh.SplitFace(face, i, j)
Description

444
CFD-GEOM Scripting

Split face into 2 or 4 faces at the specified I and J indices. Note that the imin and jmin sides of the face
have index values of 1. Specifying an I or J index on the face boundaries is OK, as long as at least one of
them is positioned in the face interior.
Back to Top

GMesh.JoinFaces

Prototype
GMesh.JoinFaces(faces)
Description
Join 2 or more faces into a single face. The input faces must form a logical and supported IJ topology. Note
that the resulting interior mesh spacings will not necessarily be identical to those of the input faces.
Back to Top

GMesh.CreateButterflyFaces

Prototype
GMesh.CreateButterflyFaces(e1, e2, e3, e4, r1, r2, num_radial_grid_pts)
Description
Create a butterfly (i.e. 4-and-core) collection of faces from the 4 input edge sets e1, e2, e3, e4. The 4 sets
must collectively form a logical single-face topology. r1 and r2 describe the radii of the diagonals of the
core face. num_radial_grid_pts defines the number of grid points to use on the edges radiating from the
core face. This value must be at least 2..
Back to Top

GMesh.CreateAllDomains

Prototype
GMesh.CreateAllDomains(surfaces_and_faces)
Description
Create as many unstructured domains (and underlying shells) as possible from the input collection of
trimmed surfaces, faces, and discrete surfaces. If the input collection is empty, CFD-GEOM will attempt to
use all trimmed surfaces, faces, and discrete surfaces in the current model. Note that no shell may consist
of both discrete and non-discrete entities. Hence, CFD-GEOM will not attempt to create mixed
shells/domains. Note that this function may fail if the input contains overlapping surfaces or gaps
between surfaces. Note also that this function is not capable of identifying Thin Wall surfaces, nor is it
capable of splitting discrete surfaces to satisfy topological constraints. If you suspect that your model may
contain ThinWall surfaces, or if you suspect that your model has discrete surfaces that may require
splitting, you should use CreateAllDomains2, instead. For example, if you have a single discrete surface
(imported from an STL file) that encloses multiple volumes, you should use CreateAllDomains2.
This option is also available through GGeometry.CreateAllDomains.
Back to Top

GMesh.CreateAllDomains2

Prototype
GMesh.CreateAllDomains2(surfaces_and_faces)
Description

445
CFD-GEOM V2014.0 User Manual

Create as many unstructured domains (and underlying shells) as possible from the input collection of
trimmed surfaces, faces, and discrete surfaces. If the input collection is empty, CFD-GEOM will attempt to
use all trimmed surfaces, faces, and discrete surfaces in the current model. Note that no shell may consist
of both discrete and non-discrete entities. Hence, CFD-GEOM will not attempt to create mixed
shells/domains. Note that this function may fail if the input contains overlapping surfaces or gaps
between surfaces. This function differs from CreateAllDomains in several key respects:
1) It is capable of identifying embedded surfaces and tagging them as Thin Wall surfaces.
2) Where necessary, it will split any discrete surfaces to satisfy topological constraints. This can be useful
if your model consists of a single discrete surface (e.g. imported from STL) that bounds more than 1
volume.
3) Though not required, it is highly recommended that you mesh all trimmed surfaces with the desired
meshing parameters before calling this function. The success of this function depends, to a certain extent,
on the quality of the surface meshes.
This option is also available through GGeometry.CreateAllDomains2.
Back to Top

GMesh.CreateShell

Prototype
GMesh.CreateShell(surfaces_and_faces)
Description
Create shells (formerly known as closed surface sets) from the input collection of surfaces and/or faces.
Note that if the input entities logically form more than one shell, this routine will return more than one
shell (the same behavior as in the GEOM GUI). Note that this routine can also handle discrete surfaces.
However, if the input contains any discrete surfaces, it must contain only discrete surfaces. Mixing
trimmed surfaces and faces is not currently supported.
This option is also available through GGeometry.CreateShell.
Back to Top

GMesh.CreateDomain

Prototype
GMesh.CreateDomain(shells)
Description
Create an unstructured domain from the input shells.
This option is also available through GGeometry.CreateDomain.
Back to Top

GMesh.AddBafflesToDomain

Prototype
GMesh.AddBafflesToDomain(domain, srfs)
Description
Add baffle surfaces to the specified domain. Note that this routine is currently used for testing only. Some
capabilities, such as the ability to output baffles to DTF is not currently supported. This will be remedied in
a future release.

446
CFD-GEOM Scripting

This option is also available through GGeometry.AddBafflesToDomain.


Back to Top

GMesh.RemoveBafflesFromDomain

Prototype
GMesh.RemoveBafflesFromDomain(domain, srfs)
Description
Remove baffles that were added via AddBafflesToDomain() from the specified domain.

This option is also available through GGeometry.RemoveBafflesFromDomain.


Back to Top

GMesh Scripting - Unstructured Meshing Options


GMesh.SetGlobalSurfaceMeshType(meshtype)

GMesh.SetLocalSurfaceMeshType(surfaces, meshtypes)

GMesh.SetLocalTriangulateFaces(faces, value)

GMesh.SetGlobalUnstMeshSize(max_cell_size, min_cell_size)

GMesh.SetLocalUnstMeshSize(entities, max_cell_size, min_cell_size)

GMesh.SetGlobalUnstTransitionFactor(tfactor)

GMesh.SetLocalUnstTransitionFactor(entities, tfactor)

GMesh.SetGlobalUnstMeshCurvatureOptions(adapt_to_curvature, max_angle=30)

GMesh.SetSurfaceThinwallOption(surfaces, value)

GMesh.SetGlobalTetPointPlacementOptions(placement_type, expansion_factor=1.1)

GMesh.SetLocalTetPointPlacementOptions(domains, placement_type, expansion_factor)

GMesh.SetGlobalTargetTetQuality(value)

GMesh.SetLocalTargetTetQuality(domains, value)

GMesh.SetLocalTetNodePerturbation(domains, onoff)

GMesh.MeshLinesAndCurves(ents, adapt_to_curvature, max_angle, transition_factor, max_cell_size,


min_cell_size, override_local_settings, force_remesh)

447
CFD-GEOM V2014.0 User Manual

GMesh.MeshSurfaces(ents, mesh_type, adapt_to_curvature, max_angle, transition_factor, max_cell_size,


min_cell_size, override_local_settings, remesh_curves, force_remesh_curves, force_remesh_surfaces)

GMesh.GenerateTetMeshes(domains, use_background_mesh, max_cell_size, min_cell_size, transition_factor,


point_placement, expansion_factor, grid_quality, remesh_curves, force_remesh_curves, remesh_surfaces,
force_remesh_surfaces)

GMesh.CreateBoxSource(start_x, start_y, start_z, end_x, end_y, end_z, cell_size)

GMesh.EditBoxSource(source, start_x, start_y, start_z, end_x, end_y, end_z, cell_size)

GMesh.CreateSphereSource(center_x, center_y, center_z, radius, cell_size)

GMesh.EditSphereSource(source, center_x, center_y, center_z, radius, cell_size)

GMesh.CreateCylinderSource(bottom_center_x, bottom_center_y, bottom_center_z,axis_dx, axis_dy, axis_dz,


axis_length,inner_radius, outer_radius,cell_size)

GMesh.EditCylinderSource(source,bottom_center_x, bottom_center_y, bottom_center_z,axis_dx, axis_dy, axis_dz,


axis_length,inner_radius, outer_radius, cell_size)

GMesh.SetCornerPointSources(points, radii)

GMesh.AddModifySurfaceInteriorSources(srf, sources, radii)

GMesh.RemoveSurfaceInteriorSources(srf, sources)

GMesh.AddModifyDomainInteriorSources(domain, sources, radii)

GMesh.RemoveDomainInteriorSources(domain, sources)

GMesh.DestroyUnstMeshes(ents)

GMesh.Generate3DHoneycombMeshes( )

GMesh.Generate2DHoneycombMeshes()

GMesh.EnableBoundaryLayerMeshing(shell, num_layers, initial_thickness, growth_rate, local_growth = 0,


local_growth_factor = .1)

GMesh.DisableBoundaryLayerMeshing(shell)

GMesh.GloballyEnableBoundaryLayerMeshing(num_layers, initial_thickness, growth_rate, local_growth = 0,


local_growth_factor = .1)

GMesh.GloballyDisableBoundaryLayerMeshing( )

GMesh.SetSurfaceFaceBoundaryLayerStatus(surfaces_and_faces, enable)

EnableBoundaryLayerMeshingDomain

DisableBoundaryLayerMeshingDomain

448
CFD-GEOM Scripting

GMesh.SetGlobalSurfaceMeshType

Prototype
GMesh.SetGlobalSurfaceMeshType(meshtype)
Description
Make the specified surface mesh type the default for the current model. Valid mesh types are:
1 - triangular
2 - quad morphing (quad-dominant, will contain ~8% triangles)
3 - quad paving (all quad)
When meshing surfaces, this is the mesh type applied to all surfaces except those whose mesh type has
been specified locally by SetLocalSurfaceMeshType(). By default, all models have a surface mesh type of 1.
Back to Top

GMesh.SetLocalSurfaceMeshType

Prototype
GMesh.SetLocalSurfaceMeshType(surfaces, meshtypes)
Description
Set the surface mesh type on the specified trimmed surfaces. Note that meshtypes' length must equal
that of "surfaces" (exception: for scripting convenience, we allow this to contain exactly one value
regardless of the number of surfaces). Valid mesh types include:
0 - unspecified; when meshing the corresponding surface, the global mesh type will be used. Note that, by
default, every surface has an unspecified mesh type until set by SetLocalSurfaceMeshType()
1 - triangular
2 - quad morphing (quad-dominant, will contain ~8% triangles)
3 - quad paving (all quad)
Back to Top

GMesh.SetLocalTriangulateFaces

Prototype
GMesh.SetLocalTriangulateFaces(faces, value)
Description
Specify whether the selected structured faces should be triangulated during unstructured surface
meshing. By default, any structured faces that belong to a shell and unstructured domain will be
triangulated if passed through the unstructured surface mesher. You can turn this off for the selected
faces by specifying 0 (FALSE). You can also turn it back on by specifying a value of 1 (TRUE).
Note that when generating tetrahedral meshes in unstructured domains bounded by faces, tets will be
built off any triangulated faces and pyramids off any non-triangulated faces.
Back to Top

GMesh.SetGlobalUnstMeshSize

Prototype
GMesh.SetGlobalUnstMeshSize(max_cell_size, min_cell_size)
Description

449
CFD-GEOM V2014.0 User Manual

Specify the global maximum and minimum allowable cell sizes for line/curve, surface, and tetrahedral
meshing. Note that the specified minimum cell size may be overridden if the model contains geometric
features smaller than this value.
Back to Top

GMesh.SetLocalUnstMeshSize

Prototype
GMesh.SetLocalUnstMeshSize(entities, max_cell_size, min_cell_size)
Description
Specify the local maximum and minimum allowable cell sizes for the specified lines, curves, and/or
surfaces. Note that the specified minimum cell size may be overridden if the input entities contain
geometric features smaller than this value, or if it is smaller than the global minimum cell size.
Back to Top

GMesh.SetGlobalUnstTransitionFactor

Prototype
GMesh.SetGlobalUnstTransitionFactor(tfactor)
Description
Set the global transition factor for unstructured line/curve/surface meshing for the current model. This
controls the global mesh growth rate and the maximum allowable ratio between adjacent grid segments
and cells during curve and surface meshing. CFD-GEOM will attempt to honor this setting except where
overridden locally via SetLocalUnstTransitionFactor(). "tfactor" should generally be about 1.1 but any
value in the range [1.001, 2] is legal.
Note that this option has no effect if the global automatic mesh size option is set to 1 (TRUE).
Back to Top

GMesh.SetLocalUnstTransitionFactor

Prototype
GMesh.SetLocalUnstTransitionFactor(entities, tfactor)
Description
Set the local transition factor (for unstructured meshing) for the specified lines/curves/surfaces. This
influences the mesh growth rate on the lines and curves bounding any input surfaces, as well as the
maximum allowable ratio between adjacent segment lengths on those lines/curves and any other input
lines/curves. Where possible, CFD-GEOM will override the global setting with this setting when meshing
the specified entities.
Note that this option has no effect if the global automatic mesh size option is set to 1 (TRUE).
Back to Top

GMesh.SetGlobalUnstMeshCurvatureOptions

Prototype
GMesh.SetGlobalUnstMeshCurvatureOptions(adapt_to_curvature, max_angle=30)
Description
Specify the options controlling curvature resolution during unstructured line/curve/surface meshing.
"adapt_to_curvature", if 1 (TRUE), indicates that curve/surface curvature should be taken into account

450
CFD-GEOM Scripting

when meshing; and "max_angle" specifies the maximum allowable angular deviation between adjacent
grid segments/cells. If "adapt_to_curvature" is 0 (FALSE), "max_angle" is ignored.
Back to Top

GMesh.SetSurfaceThinwallOption

Prototype
GMesh.SetSurfaceThinwallOption(surfaces, value)
Description
Enable/Disable thinwall post-processing on specific surfaces. If set to 1 (TRUE) for any surfaces, then when
you mesh those surfaces, their meshes will be made suitable for thinwall boundary assignment in the
CFD-ACE solver. Thinwall post-processing can adversely affect mesh quality, so you should use this option
only if necessary.
Back to Top

GMesh.SetGlobalTetPointPlacementOptions

Prototype
GMesh.SetGlobalTetPointPlacementOptions(placement_type, expansion_factor=1.1)
Description
Specify the point placement strategy used when generating tetrahedral meshes in unstructured domains
in the current model. Valid placement types are:

1 - the default strategy. CFD-GEOM will attempt to increase cell sizes away from the boundary
triangulations and towards the interior of the domain(s). The rate of expansion is governed by the
expansion factor (which must be in the range [1,3]).
2 - linear progression. CFD-GEOM will try to linearly interpolate cell sizes between domain boundaries.
This option is often more suitable when growing tets between surface triangulations of significantly
varying mesh densities. This option normally produces more cells than does the default strategy. Note
that the expansion factor is ignored when using the linear progression option.

Note that this setting can be overridden for selected domains via SetLocalTetPointPlacementOptions().
Back to Top

GMesh.SetLocalTetPointPlacementOptions

Prototype
GMesh.SetLocalTetPointPlacementOptions(domains, placement_type, expansion_factor)
Back to Top

GMesh.SetGlobalTargetTetQuality

Prototype
GMesh.SetGlobalTargetTetQuality(value)
Back to Top

451
CFD-GEOM V2014.0 User Manual

GMesh.SetLocalTargetTetQuality

Prototype
GMesh.SetLocalTargetTetQuality(domains, value)
Back to Top

GMesh.SetLocalTetNodePerturbation

Prototype
GMesh.SetLocalTetNodePerturbation(domains, onoff)
Back to Top

GMesh.MeshLinesAndCurves

Prototype
GMesh.MeshLinesAndCurves(ents, adapt_to_curvature, max_angle, transition_factor, max_cell_size,
min_cell_size, override_local_settings, force_remesh)
Description
Generate curvilinear meshes on the input lines/curves.
Back to Top

GMesh.MeshSurfaces

Prototype
GMesh.MeshSurfaces(ents, mesh_type, adapt_to_curvature, max_angle, transition_factor,
max_cell_size, min_cell_size, override_local_settings, remesh_curves, force_remesh_curves,
force_remesh_surfaces)
Description
Generate triangular or quad meshes on the input surfaces.
Back to Top

GMesh.GenerateTetMeshes

Prototype
GMesh.GenerateTetMeshes(domains, use_background_mesh, max_cell_size, min_cell_size,
transition_factor, point_placement, expansion_factor, grid_quality, remesh_curves,
force_remesh_curves, remesh_surfaces, force_remesh_surfaces)
Description
Generate tet meshes in the specified domains.
Back to Top

GMesh.CreateBoxSource

Prototype
CreateBoxSource(start_x, start_y, start_z, end_x, end_y, end_z, cell_size)
Description
Create a box source for triangular and/or tetrahedral meshing. A box source is used to refine the
mesh within an imaginary 3-D box aligned with the X, Y, and Z axes. The box is defined by

452
CFD-GEOM Scripting

start_x, start_y, start_z: the coordinates of one corner of the box.


end_x, end_y, end_z: the coordinates of the opposite corner.
cell_size: This real value specifies the requested cell size inside the box.
This function returns a handle to the new source.
Back to Top

GMesh.EditBoxSource

Prototype
EditBoxSource(source, start_x, start_y, start_z, end_x, end_y, end_z, cell_size)
Description
Modify the settings on an existing tetrahedral box source. The box is defined by
start_x, start_y, start_z: the coordinates of one corner of the box.
end_x, end_y, end_z: the coordinates of the opposite corner.
cell_size: This real value specifies the requested cell size inside the box.
Back to Top

GMesh.CreateSphereSource

Prototype
CreateSphereSource(center_x, center_y, center_z, radius, cell_size)
Description
Create a sphere source for triangular and/or tetrahedral meshing. A sphere source is used to
refine the mesh within a given distance from a central point. The sphere is defined by
center_x, center_y, center_z: the coordinates of the center of the sphere.
radius: The radius of the sphere. This value must be greater than 0.
cell_size: This real value specifies the requested cell size inside the sphere.
This function returns a handle to the new source.
Back to Top

GMesh.EditSphereSource

Prototype
EditSphereSource(source, center_x, center_y, center_z, radius, cell_size)
Description
Modify the settings on an existing triangular/tetrahedral sphere source. The sphere is defined by
center_x, center_y, center_z: the coordinates of the center of the sphere.
radius: The radius of the sphere. This value must be greater than 0.
cell_size: This real value specifies the requested cell size inside the sphere.
Back to Top

GMesh.CreateCylinderSource

Prototype

453
CFD-GEOM V2014.0 User Manual

CreateCylinderSource(bottom_center_x, bottom_center_y, bottom_center_z,axis_dx, axis_dy,


axis_dz, axis_length,inner_radius, outer_radius,cell_size)
Description
Create a cylinder source for triangular and/or tetrahedral meshing. A cylindrical source is used to
refine the mesh between an interior radius and exterior radius region. The cylinder is defined by
bottom_center_x, bottom_center_y, bottom_center_z: the coordinates of the bottom center of
the cylinder.
axis_dx, axis_dy, axis_dz: vector specifying the direction of the cylinder axis.
axis_length: the length of the cylinder. Note that, if the vector specifying the cylinder axis
direction is normalized, axis_length will be the actual length of the cylinder. If not, the actual
cylinder length will be the axis_length multiplied by the length of the direction vector.
inner_radius: the inner radius of the cylindrical region. This may be 0, and must be less than the
outer_radius.
outer_radius: the outer radius of the cylindrial region. This must be greater than the inner radius.
cell_size: This real value specifies the requested cell size inside the cylinder.
This function returns a handle to the new source.
Back to Top

GMesh.EditCylinderSource

Prototype
EditCylinderSource(source,bottom_center_x, bottom_center_y, bottom_center_z,axis_dx,
axis_dy, axis_dz, axis_length, inner_radius, outer_radius,cell_size)
Description
Modify the settings on an existing Cartesian triangular/tetrahedral source. The cylinder is defined
by
bottom_center_x, bottom_center_y, bottom_center_z: the coordinates of the bottom center of
the cylinder.
axis_dx, axis_dy, axis_dz: vector specifying the direction of the cylinder axis.
axis_length: the length of the cylinder. Note that, if the vector specifying the cylinder axis
direction is normalized, axis_length will be the actual length of the cylinder. If not, the actual
cylinder length will be the axis_length multiplied by the length of the direction vector.
inner_radius: the inner radius of the cylindrical region. This may be 0, and must be less than the
outer_radius.
outer_radius: the outer radius of the cylindrial region. This must be greater than the inner radius.
cell_size: This real value specifies the requested cell size inside the cylinder.
Back to Top

GMesh.SetCornerPointSources

Prototype
GMesh.SetCornerPointSources(points, radii)
Description
Set corner point sources for unstructured meshing. A corner point is a point shared by 2 or more
lines/curves, which are themselves assumed to have been used in the construction of surfaces. The radius
values assigned to corner points influence mesh size in the vicinity of the point during

454
CFD-GEOM Scripting

line/curve/surface/tet meshing. "radii" can be specified in 2 ways. If a single floating point number is
specified, that value will be applied to all input points. If a list of floating point numbers is specified, each
value will be applied to the corresponding point. This allows you to simultaneously specify different radii
for 2 or more points. This requires that the number of radii equal the number of points. Note that a value
of 0 essentially "unsets" the source. In other words, a point with a 0 radius will not be treated as a source
during subsequent meshing.
Back to Top

GMesh.AddModifySurfaceInteriorSources

Prototype
GMesh.AddModifySurfaceInteriorSources(srf, sources, radii)
Description
Assign interior sources to a surface for unstructured surface meshing. These sources can be used to
influence mesh spacings in the surface interior in the vicinity of the sources. Sources can be points, edges,
composite edges, and/or faces. A point's radius value can be 0 or greater (a value of 0 "unsets" the
source). The radius value for edges and faces is ignored. Instead, the grid points on these entities are
treated as source points whose radius values are derived based on their distance from adjacent grid
points.
"radii" can be specified in 2 ways. If a single floating point number is specified, that value will be applied
to all input points. If a list of floating point numbers is specified, each value will be applied to the
corresponding entity (if a point). This allows you to simultaneously specify different radii for 2 or more
points. The number of radii must equal the number of entities. For edge and face sources, you should
specify a radius of 0.
Back to Top

GMesh.RemoveSurfaceInteriorSources

Prototype
GMesh.RemoveSurfaceInteriorSources(srf, sources)
Description
Remove (i.e. unset) sources added to a surface via AddModifySurfaceInteriorSources(). Any entities in
"sources" that are not sources for the surface are ignored.
Back to Top

GMesh.AddModifyDomainInteriorSources

Prototype
GMesh.AddModifyDomainInteriorSources(domain, sources, radii)
Description
Assign interior sources to a domain for tet meshing. These sources can be used to influence mesh
spacings in the domain interior in the vicinity of the sources. Sources can be points, edges, composite
edges, faces, and/or blocks. A point's radius value can be 0 or greater (a value of 0 "unsets" the source).
The radius value for edges, faces, and blocks is ignored. Instead, the grid points on these entities are
treated as source points whose radius values are derived based on their distance from adjacent grid
points.
"radii" can be specified in 2 ways. If a single floating point number is specified, that value will be applied
to all input points. If a list of floating point numbers is specified, each value will be applied to the
corresponding entity (if a point). This allows you to simultaneously specify different radii for 2 or more

455
CFD-GEOM V2014.0 User Manual

points. The number of radii must equal the number of entities. For edge, face, and block sources, you
should specify a radius of 0.
Back to Top

GMesh.RemoveDomainInteriorSources

Prototype
GMesh.RemoveDomainInteriorSources(domain, sources)
Description
Remove (i.e. unset) sources added to a domain via AddModifyDomainInteriorSources(). Any entities in
"sources" that are not sources for the domain are ignored.
Back to Top

GMesh.DestroyUnstMeshes

Prototype
GMesh.DestroyUnstMeshes(ents)
Description
Delete the unstructured meshes on the specified surfaces and faces.
Back to Top

GMesh.Generate3DHoneycombMeshes

Prototype
GMesh.Generate3DHoneycombMeshes()
Description
Generate 3-D honeycomb meshes on the current model. Note the following restrictions:
1) The model must contain at least one unstructured domain, and all unstructured domains must contain
tetrahedral meshes.
2) No unstructured domain may share a surface or face with a semi-structured or structured domain.
These limitations will be removed in a future release.
Back to Top

GMesh.Generate2DHoneycombMeshes

Prototype
GMesh.Generate2DHoneycombMeshes()
Description
Generate 2-D honeycomb meshes on all trimmed surfaces in the current model. Note the following
restrictions:
1) The model must contain at least one trimmed surface, and all trimmed surfaces must have triangular
meshes.
2) All surfaces must lie in a constant Z plane.
3) No surface may share an Edge entity with a Face entity
These limitations will be removed in a future release.

456
CFD-GEOM Scripting

Back to Top

GMesh.EnableBoundaryLayerMeshing

Prototype
GMesh.EnableBoundaryLayerMeshing(shell, num_layers, initial_thickness, growth_rate, local_growth = 0,
local_area_factor = .1)
Description
Enable boundary layer meshing for the specified shell. This function provides the second of 3 settings that
collectively determine whether or not boundary layers will be generated off a particular side of a surface.
To generate boundary layers from a particular side of a surface, three conditions/settings must be
satisfied:
1) Boundary layer meshing must have been enabled for the surface. See
SetSurfaceFaceBoundaryLayerStatus(), which can be used to enable or disable boundary layer meshing for
a surface. By default, boundary layer meshing is enabled for all surfaces. Unless you specifically want to
disable boundary layer meshing for a surface, no action should be required here. If boundary layers have
been disabled for a surface, boundary layers will not be generated from that surface regardless of the
next 2 settings. The following 2 settings control which side(s) of a surface should have boundary layers.
2) Boundary layer meshing must have been enabled for the shell(s) that use the surface. See
EnableBoundaryLayerMeshing(). For example, if a surface is shared by 2 adjacent shells "shell1" and
"shell2", and you want to grow a boundary layer from the surface into shell1, but not shell2, you would
enable boundary layer meshing for shell1 and disable it for shell2. Note that, by default, boundary layer
meshing is disabled for shells. See also DisableBoundaryLayerMeshing() for manually disabling boundary
layer meshing on a shell.
3) Boundary layers must be enabled for the domain(s) that own a shell that has been enabled for
boundary layers. For example, suppose that you have a shell that is shared by 2 domains, where the shell
forms a void in domain1 and is the outer boundary of domain2. Now suppose that you want to grow
boundary layers into domain1 but not domain2. Here, you would enable boundary layer meshing for
domain1 (see EnableBoundaryLayerMeshingDomain() and disable it for domain2 (see
DisableBoundaryLayerMeshingDomain()). By default, boundary layers are enabled for domains.
Note that this function does not actually generate the boundary layer meshes. You will need to run
GenerateTetMeshes(), which will generate the boundary layers during tetrahedral meshing based on the
current boundary layer settings. Additional arguments include: num_layers: an integer indicating the
number of boundary layers to generate from each surface. This must be at least 1.
initial_thickness: a real number indicating the absolute initial layer thickness. This must be >0. However,
see local_growth and local_area_factor below.
growth_rate: a real number indicating the ratio between the thickness of each layer and that of the
previous layer. This must be >0. If less than 1, boundary layers will become thinner with each successive
layer.
local_growth: if 1, then instead of using the absolute initial thickness specified above, the first layer
thickness will be based on local surface mesh size (see local_area_factor below).
local_area_factor: if local_growth is 1, then this multiplicative factor is applied to the local surface cell size
to obtain the local first layer thickness.
Back to Top

GMesh.DisableBoundaryLayerMeshing

Prototype

457
CFD-GEOM V2014.0 User Manual

GMesh.DisableBoundaryLayerMeshing(shell)
Description
Disable boundary layer meshing for the specified shell. This implies that no boundary layers will be
generated off any surfaces/faces in the shell and overrides any local setting made via
SetSurfaceFaceBoundaryLayerStatus(). This setting will take effect when you next run
GenerateTetMeshes(). For more information on controlling where boundary layers are to be generated,
see EnableBoundaryLayerMeshing().
Back to Top

GMesh.GloballyEnableBoundaryLayerMeshing

Prototype
GMesh.GloballyEnableBoundaryLayerMeshing( num_layers, initial_thickness, growth_rate, local_growth
0, local_area_factor = .1)
Description
Enable boundary layer meshing for all shells in the current model. This implies that boundary layers will
be grown off all surfaces/faces in the shells (where possible) except where disabled via
SetSurfaceFaceBoundaryLayerStatus() or DisableBoundaryLayerMeshingDomain(). This function is
equivalent to calling EnableBoundaryLayerMeshing() on all shells individually. For more information on
controlling where boundary layers are to be generated, see that function.
Arguments include:
num_layers: an integer indicating the number of boundary layers to generate from each surface. This
must be at least 1.
initial_thickness: a real number indicating the absolute initial layer thickness. This must be >0. However,
see local_growth and local_area_factor below.
growth_rate: a real number indicating the ratio between the thickness of each layer and that of the
previous layer. This must be >0. If less than 1, boundary layers will become thinner with each successive
layer.
local_growth: if 1, then instead of using the absolute initial thickness specified above, the first layer
thickness will be based on local surface mesh size (see local_area_factor below).
local_area_factor: if local_growth is 1, then this multiplicative factor is applied to the local surface cell size
to obtain the local first layer thickness.
This setting will take effect when you next run GenerateTetMeshes().
Back to Top

GMesh.GloballyDisableBoundaryLayerMeshing

Prototype
GMesh.GloballyDisableBoundaryLayerMeshing( )
Description
Disable boundary layer meshing for all shells in the current model. This implies that no boundary layers
will be generated off any surfaces/faces in all shells and overrides any local setting made via
SetSurfaceFaceBoundaryLayerStatus(). It is equivalent to calling DisableBoundaryLayerMeshing() on the
shells individually. For more information on controlling where boundary layers are to be generated, see
EnableBoundaryLayerMeshing().
This setting will take effect when you next run GenerateTetMeshes().
Back to Top

458
CFD-GEOM Scripting

GMesh.SetSurfaceFaceBoundaryLayerStatus

Prototype
GMesh.SetSurfaceFaceBoundaryLayerStatus(surfaces_and_faces, enable)
Description
Enable/Disable boundary layer meshing off the specified surfaces and/ or faces. Note that enabling
boundary meshing for a surface/face has no effect if it hasn't also been enabled for the shell(s) and
domain(s) constructed from it. For more information on controlling where boundary layers are to be
generated, see EnableBoundaryLayerMeshing().
"enable" is an integer, which if 0 (FALSE), disables boundary layer meshing. A value of 1 (TRUE) enables it.
This setting will take effect when you next run GenerateTetMeshes().
I
Back to Top

Prototype
Description

I
Back to Top

EnableBoundaryLayerMeshingDomain

Prototype
EnableBoundaryLayerMeshingDomain( domain )
Description
Enable boundary layer meshing for the specified domain. Boundary layers are enabled for the domain but
the final setting also includes the settings on the underlying shells and surfaces. For more information on
controlling where boundary layers are to be generated, see EnableBoundaryLayerMeshing().
This setting will take effect when you next run GenerateTetMeshes().
I
Back to Top

DisableBoundaryLayerMeshingDomain

Prototype
DisableBoundaryLayerMeshingDomain( domain )
Description
Disable boundary layer meshing for the specified domain. This implies that, regardless of the settings on
the shells and surfaces of this domain, no boundary layer meshing will take place inside the domain. For
more information on controlling where boundary layers are to be generated, see
EnableBoundaryLayerMeshing().
This setting will take effect when you next run GenerateTetMeshes().
I

459
CFD-GEOM V2014.0 User Manual

Back to Top

GMesh Scripting - General Volume Grid Sweeping Options


GMesh.CreateExtrudedVolumeGrids(profile_entities, dx, dy, dz, distance_multiplier, num_grid_points, numtimes,
create_multiple_blocks, link_extrusion_edges, link_translated_edges)

GMesh.CreateExtrudedVolumeGridsAlongEdges(profile_entities, path_edges, numtimes, create_multiple_blocks,


link_extrusion_edges, link_translated_edges)

GMesh.CreateExtrudedVolumeGridsAlongLines(profile_entities, path_lines, num_grid_points, numtimes,


create_multiple_blocks, link_extrusion_edges, link_translated_edges)

GMesh.CreateExtrudedVolumeGridsAlongPoints(profile_entities, path_points, num_grid_points, numtimes,


create_multiple_blocks, link_extrusion_edges, link_translated_edges)

GMesh.CreateRevolvedVolumeGrids(profile_entities, sx, sy, sz, dx, dy, dz, angle, num_grid_points, numtimes,
create_multiple_blocks, link_revolved_edges, link_rotated_edges)

GMesh.CreateRevolvedVolumeGridsAboutLine(profile_entities, line, angle, num_grid_points, numtimes,


create_multiple_blocks, link_revolved_edges, link_rotated_edges)

GMesh.CreateRevolvedVolumeGridsAboutPoints(profile_entities, spt, ept, angle, num_grid_points, numtimes,


create_multiple_blocks, link_revolved_edges, link_rotated_edges)

GMesh.CreateRevolvedVolumeGridsAbout3Points(profile_entities, cpt, spt, ept, num_grid_points, numtimes,


create_multiple_blocks, link_revolved_edges, link_rotated_edges)

GMesh.CreateRevolvedVolumeGridsAboutPointAndVector(profile_entities, spt, dx, dy, dz, angle, num_grid_points,


numtimes, create_multiple_blocks, link_revolved_edges, link_rotated_edges)

GMesh.CreateSweptVolumeGrids(profile_ents, path_crvs, use_fixed_orientation, reverse, scaling, numpts,


nsections, projection_type, create_multiple_blocks, link_swept_edges, link_opposite_edges)

GMesh.CreateSweptVolumeGridsWithTwistVector(profile_ents, path_crvs, use_fixed_orientation, dx, dy, dz,


reverse, scaling, numpts, nsections, projection_type, create_multiple_blocks, link_swept_edges,
link_opposite_edges)

GMesh.CreateAxiallyExtrudedVolumeGrids(profile_entities, sx, sy, sz, dx, dy, dz, scale, num_grid_points,


numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)

GMesh.CreateAxiallyExtrudedVolumeGridsAboutLine(profile_entities, line, scale, num_grid_points, numtimes,


create_multiple_blocks, link_extruded_edges, link_scaled_edges)

GMesh.CreateAxiallyExtrudedVolumeGridsAboutPoints(profile_entities, spt, ept, scale, num_grid_points,


numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)

GMesh.CreateAxiallyExtrudedVolumeGridsAbout3Points(profile_entities, cpt, spt, ept, scale, num_grid_points,


numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)

460
CFD-GEOM Scripting

GMesh.CreateAxiallyExtrudedVolumeGridsAboutPointAndVector(profile_entities, spt, dx, dy, dz, scale,


num_grid_points, numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)

GMesh.CreateExtrudedVolumeGrids

Prototype
GMesh.CreateExtrudedVolumeGrids(profile_entities, dx, dy, dz, distance_multiplier, num_grid_points,
numtimes, create_multiple_blocks, link_extrusion_edges, link_translated_edges)
Description
Create blocks and/or semi-structured domains by extruding profile faces and/or meshed surfaces in a
direction specified by a vector. Note that the vector (dx, dy, dz) is not normalized by this routine. Hence,
the total extrusion distances in X, Y, and Z are dx*distance_multiplier, dy*distance_multiplier, and
dz*distance_multipler. "numtimes", which must be at least 1, specifies the number of layers of entities to
generate. "num_grid_points", which must be at least 2, specifies the number of grid points (running in the
extrusion direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_extrusion_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the extrusion direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_translated_edges", if 1 (TRUE), causes the creation of edge linking groups from the translated edges.
Let's define the profile edges as those that bound the input profile surfaces and faces. During the
extrusion, CFD-GEOM creates translated copies of each profile edge. If you elect to link translated edges,
an edge linking group will be created from each profile edge and the edges derived from it. Any pre-
existing edges will not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the extrusion direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateExtrudedVolumeGridsAlongEdges

Prototype
GMesh.CreateExtrudedVolumeGridsAlongEdges(profile_entities, path_edges, numtimes,
create_multiple_blocks, link_extrusion_edges, link_translated_edges)
Description
Create blocks and/or semi-structured domains by extruding profile faces and/or meshed surfaces along a
set of one or more path edges. The direction, distance, and number of grid points is implied by the path
edges. Note that the path edges must form a non-closed, connected set. Moreover, one of the path edge
set endpoints must also be a corner point of at least one profile face/surface. "numtimes", which must be
at least 1, specifies the number of layers of entities to generate. The total number of layers will be
numtimes multiplied by the number of path edges.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.

461
CFD-GEOM V2014.0 User Manual

"link_extrusion_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the extrusion direction (except for any pre-existing edges). The
master edge of each group will usually be the path edge in that layer. However, if a path edge is a
composite edge, no edge linking group will be created in that layer.
"link_translated_edges", if 1 (TRUE), causes the creation of edge linking groups from the translated edges.
Let's define the profile edges as those that bound the input profile surfaces and faces. During the
extrusion, CFD-GEOM creates translated copies of each profile edge. If you elect to link translated edges,
an edge linking group will be created from each profile edge and the edges derived from it. Any pre-
existing edges will not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the extrusion direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateExtrudedVolumeGridsAlongLines

Prototype
GMesh.CreateExtrudedVolumeGridsAlongLines(profile_entities, path_lines, num_grid_points, numtimes,
create_multiple_blocks, link_extrusion_edges, link_translated_edges)
Description
Create blocks and/or semi-structured domains by extruding profile faces and/or meshed surfaces along a
set of one or more path lines. The direction and distance is implied by the path lines. Note that the lines
must form a non-closed, connected set. Moreover, one of the line set endpoints must also be a corner
point of at least one profile face/ surface. "numtimes", which must be at least 1, specifies the number of
layers of entities to generate. The total number of layers will be numtimes multiplied by the number of
path lines. "num_grid_points", which must be at least 2, specifies the number of grid points (running in
the extrusion direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_extrusion_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the extrusion direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_translated_edges", if 1 (TRUE), causes the creation of edge linking groups from the translated edges.
Let's define the profile edges as those that bound the input profile surfaces and faces. During the
extrusion, CFD-GEOM creates translated copies of each profile edge. If you elect to link translated edges,
an edge linking group will be created from each profile edge and the edges derived from it. Any pre-
existing edges will not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the extrusion direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateExtrudedVolumeGridsAlongPoints

Prototype

462
CFD-GEOM Scripting

GMesh.CreateExtrudedVolumeGridsAlongPoints(profile_entities, path_points, num_grid_points,


numtimes, create_multiple_blocks, link_extrusion_edges, link_translated_edges)
Description
Create blocks and/or semi-structured domains by extruding profile faces and/or meshed surfaces along a
path defined by two or more points. The direction and distance is implied by the points. "numtimes",
which must be at least 1, specifies the number of layers of entities to generate. The total number of layers
will be (numtimes)(number of path points - 1). "num_grid_points", which must be at least 2, specifies the
number of grid points (running in the extrusion direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_extrusion_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the extrusion direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_translated_edges", if 1 (TRUE), causes the creation of edge linking groups from the translated edges.
Let's define the profile edges as those that bound the input profile surfaces and faces. During the
extrusion, CFD-GEOM creates translated copies of each profile edge. If you elect to link translated edges,
an edge linking group will be created from each profile edge and the edges derived from it. Any pre-
existing edges will not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the extrusion direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateRevolvedVolumeGrids

Prototype
GMesh.CreateRevolvedVolumeGrids(profile_entities, sx, sy, sz, dx, dy, dz, angle, num_grid_points,
numtimes, create_multiple_blocks, link_revolved_edges, link_rotated_edges)
Description
Create blocks and/or semi-structured domains by revolving profile faces and/or meshed surfaces about an
axis defined by a set of start point coordinates and a vector. The input angle is assumed to be in degrees.
"numtimes", which must be at least 1, specifies the number of layers of entities to generate.
"num_grid_points", which must be at least 2, specifies the number of grid points (running in the
revolution direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_revolved_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the revolution direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_rotated_edges", if 1 (TRUE), causes the creation of edge linking groups from the rotated edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the revolution,
CFD-GEOM creates rotated copies of each profile edge. If you elect to link rotated edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.

463
CFD-GEOM V2014.0 User Manual

Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the revolution direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateRevolvedVolumeGridsAboutLine

Prototype
GMesh.CreateRevolvedVolumeGridsAboutLine(profile_entities, line, angle, num_grid_points, numtimes,
create_multiple_blocks, link_revolved_edges, link_rotated_edges)
Description
Create blocks and/or semi-structured domains by revolving profile faces and/or meshed surfaces about an
axis defined by a line entity. The input angle is assumed to be in degrees.
"numtimes", which must be at least 1, specifies the number of layers of entities to generate.
"num_grid_points", which must be at least 2, specifies the number of grid points (running in the
revolution direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_revolved_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the revolution direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_rotated_edges", if 1 (TRUE), causes the creation of edge linking groups from the rotated edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the revolution,
CFD-GEOM creates rotated copies of each profile edge. If you elect to link rotated edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the revolution direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateRevolvedVolumeGridsAboutPoints

Prototype
GMesh.CreateRevolvedVolumeGridsAboutPoints(profile_entities, spt, ept, angle, num_grid_points,
numtimes, create_multiple_blocks, link_revolved_edges, link_rotated_edges)
Description
Create blocks and/or semi-structured domains by revolving profile faces and/or meshed surfaces about an
axis defined by 2 point entities. The input angle is assumed to be in degrees.
"numtimes", which must be at least 1, specifies the number of layers of entities to generate.
"num_grid_points", which must be at least 2, specifies the number of grid points (running in the
revolution direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.

464
CFD-GEOM Scripting

"link_revolved_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the revolution direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_rotated_edges", if 1 (TRUE), causes the creation of edge linking groups from the rotated edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the revolution,
CFD-GEOM creates rotated copies of each profile edge. If you elect to link rotated edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the revolution direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateRevolvedVolumeGridsAbout3Points

Prototype
GMesh.CreateRevolvedVolumeGridsAbout3Points(profile_entities, cpt, spt, ept, num_grid_points,
numtimes, create_multiple_blocks, link_revolved_edges, link_rotated_edges)
Description
Create blocks and/or semi-structured domains by revolving profile faces and/or meshed surfaces about an
axis defined by 3 point entities. cpt represents a point on the rotation axis. The axis direction is defined by
the normal to the plane containing cpt, spt, and ept. The angle is implied by the angle between the
vectors cpt->spt and cpt->ept.
"numtimes", which must be at least 1, specifies the number of layers of entities to generate.
"num_grid_points", which must be at least 2, specifies the number of grid points (running in the
revolution direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_revolved_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the revolution direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_rotated_edges", if 1 (TRUE), causes the creation of edge linking groups from the rotated edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the revolution,
CFD-GEOM creates rotated copies of each profile edge. If you elect to link rotated edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the revolution direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateRevolvedVolumeGridsAboutPointAndVector

Prototype

465
CFD-GEOM V2014.0 User Manual

GMesh.CreateRevolvedVolumeGridsAboutPointAndVector(profile_entities, spt, dx, dy, dz, angle,


num_grid_points, numtimes, create_multiple_blocks, link_revolved_edges, link_rotated_edges)
Description
Create blocks and/or semi-structured domains by revolving profile faces and/or surfaces about an axis
defined by a point entity and a vector. The input angle is assumed to be in degrees.
"numtimes", which must be at least 1, specifies the number of layers of entities to generate.
"num_grid_points", which must be at least 2, specifies the number of grid points (running in the
revolution direction) to use in each layer.
Ordinarily, "create_multiple_blocks" should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer. This will fail if the input faces do not form a logical IJ topology.
"link_revolved_edges", if 1 (TRUE), will cause the creation of an edge linking group in each layer. This
group will consist of all edges running in the revolution direction (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
"link_rotated_edges", if 1 (TRUE), causes the creation of edge linking groups from the rotated edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the revolution,
CFD-GEOM creates rotated copies of each profile edge. If you elect to link rotated edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces generated in the revolution direction. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateSweptVolumeGrids

Prototype
GMesh.CreateSweptVolumeGrids(profile_ents, path_crvs, use_fixed_orientation, reverse, scaling,
numpts, nsections, projection_type, create_multiple_blocks, link_swept_edges, link_opposite_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by sweeping profile faces and/or
meshed surfaces along a set of path curves.
Back to Top

GMesh.CreateSweptVolumeGridsWithTwistVector

Prototype
GMesh.CreateSweptVolumeGridsWithTwistVector(profile_ents, path_crvs, use_fixed_orientation, dx, dy,
dz, reverse, scaling, numpts, nsections, projection_type, create_multiple_blocks, link_swept_edges,
link_opposite_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by sweeping profile faces and/or
meshed surfaces along a set of path curves.
Back to Top

466
CFD-GEOM Scripting

GMesh.CreateAxiallyExtrudedVolumeGrids

Prototype
GMesh.CreateAxiallyExtrudedVolumeGrids(profile_entities, sx, sy, sz, dx, dy, dz, scale, num_grid_points,
numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by axially extruding profile faces
and/or meshed surfaces about an axis defined by a set of start point coordinates and a vector. Additional
arguments include:
scale: the scale factor. This factor must be greater than 0. You should avoid specifying values close to 0
and 1 (how close depends upon the scale of your model).
num_grid_points: the number of grid points to use on each edge radiating away from the axis. Must be at
least 2.
numtimes: the number of layers of entities to generate. This must be at least 1.
create_multiple_blocks: ordinarily this should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer of entities. This will fail if the input faces do not form a logical (or supported) IJ
topology.
link_extruded_edges: if 1 (TRUE), will cause the creation of an edge linking group in each layer. This group
will consist of all edges radiating away from the extrusion axis (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
link_scaled_edges: if 1 (TRUE), causes the creation of edge linking groups from the scaled edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the extrusion,
CFD-GEOM creates scaled copies of each profile edge. If you elect to link scaled edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces radiating away from the extrusion axis. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateAxiallyExtrudedVolumeGridsAboutLine

Prototype
GMesh.CreateAxiallyExtrudedVolumeGridsAboutLine(profile_entities, line, scale, num_grid_points,
numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by axially extruding profile faces
and/or meshed surfaces about an axis defined by a line entity.
scale: the scale factor. This factor must be greater than 0. You should avoid specifying values close to 0
and 1 (how close depends upon the scale of your model).
num_grid_points: the number of grid points to use on each edge radiating away from the axis. Must be at
least 2.
numtimes: the number of layers of entities to generate. This must be at least 1.
create_multiple_blocks: ordinarily this should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a

467
CFD-GEOM V2014.0 User Manual

single block in each layer of entities. This will fail if the input faces do not form a logical (or supported) IJ
topology.
link_extruded_edges: if 1 (TRUE), will cause the creation of an edge linking group in each layer. This group
will consist of all edges radiating away from the extrusion axis (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
link_scaled_edges: if 1 (TRUE), causes the creation of edge linking groups from the scaled edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the extrusion,
CFD-GEOM creates scaled copies of each profile edge. If you elect to link scaled edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces radiating away from the extrusion axis. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateAxiallyExtrudedVolumeGridsAboutPoints

Prototype
GMesh.CreateAxiallyExtrudedVolumeGridsAboutPoints(profile_entities, spt, ept, scale, num_grid_points,
numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by axially extruding profile faces
and/or meshed surfaces about an axis defined by 2 point entities.
scale: the scale factor. This factor must be greater than 0. You should avoid specifying values close to 0
and 1 (how close depends upon the scale of your model).
num_grid_points: the number of grid points to use on each edge radiating away from the axis. Must be at
least 2.
numtimes: the number of layers of entities to generate. This must be at least 1.
create_multiple_blocks: ordinarily this should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer of entities. This will fail if the input faces do not form a logical (or supported) IJ
topology.
link_extruded_edges: if 1 (TRUE), will cause the creation of an edge linking group in each layer. This group
will consist of all edges radiating away from the extrusion axis (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
link_scaled_edges: if 1 (TRUE), causes the creation of edge linking groups from the scaled edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the extrusion,
CFD-GEOM creates scaled copies of each profile edge. If you elect to link scaled edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces radiating away from the extrusion axis. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

468
CFD-GEOM Scripting

GMesh.CreateAxiallyExtrudedVolumeGridsAbout3Points

Prototype
GMesh.CreateAxiallyExtrudedVolumeGridsAbout3Points(profile_entities, cpt, spt, ept, scale,
num_grid_points, numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by axially extruding profile faces
and/or meshed surfaces about an axis defined by 3 point entities. cpt represents a point on the axis. The
axis direction is defined by the normal to the plane containing cpt, spt, and ept.
scale: the scale factor. This factor must be greater than 0. You should avoid specifying values close to 0
and 1 (how close depends upon the scale of your model).
num_grid_points: the number of grid points to use on each edge radiating away from the axis. Must be at
least 2.
numtimes: the number of layers of entities to generate. This must be at least 1.
create_multiple_blocks: ordinarily this should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a
single block in each layer of entities. This will fail if the input faces do not form a logical (or supported) IJ
topology.
link_extruded_edges: if 1 (TRUE), will cause the creation of an edge linking group in each layer. This group
will consist of all edges radiating away from the extrusion axis (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
link_scaled_edges: if 1 (TRUE), causes the creation of edge linking groups from the scaled edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the extrusion,
CFD-GEOM creates scaled copies of each profile edge. If you elect to link scaled edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces radiating away from the extrusion axis. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh.CreateAxiallyExtrudedVolumeGridsAboutPointAndVector

Prototype
GMesh.CreateAxiallyExtrudedVolumeGridsAboutPointAndVector(profile_entities, spt, dx, dy, dz, scale,
num_grid_points, numtimes, create_multiple_blocks, link_extruded_edges, link_scaled_edges)
Description
Create structured domains (i.e. blocks) and/or semi-structured domains by axially extruding profile faces
and/or meshed surfaces about an axis defined by a point entity and a vector.
scale: the scale factor. This factor must be greater than 0. You should avoid specifying values close to 0
and 1 (how close depends upon the scale of your model).
num_grid_points: the number of grid points to use on each edge radiating away from the axis. Must be at
least 2.
numtimes: the number of layers of entities to generate. This must be at least 1.
create_multiple_blocks: ordinarily this should be 1 (TRUE), and it is ignored if less than 2 profile faces are
specified. However, if 0 (FALSE), and if 2 or more profile faces are specified, CFD-GEOM will construct a

469
CFD-GEOM V2014.0 User Manual

single block in each layer of entities. This will fail if the input faces do not form a logical (or supported) IJ
topology.
link_extruded_edges: if 1 (TRUE), will cause the creation of an edge linking group in each layer. This group
will consist of all edges radiating away from the extrusion axis (except for any pre-existing edges). The
master edge of each group is chosen arbitrarily.
link_scaled_edges: if 1 (TRUE), causes the creation of edge linking groups from the scaled edges. Let's
define the profile edges as those that bound the input profile surfaces and faces. During the extrusion,
CFD-GEOM creates scaled copies of each profile edge. If you elect to link scaled edges, an edge linking
group will be created from each profile edge and the edges derived from it. Any pre-existing edges will
not be added. Each profile edge will become the master of its edge linking group.
Note If any input surfaces are bound by lines/curves rather than edges, then edges will be constructed on
those lines/curves and substituted into the surface definitions. This is necessary to establish proper
connectivity between the surfaces and the faces radiating away from the extrusion axis. This is a necessary
condition for the construction of semi-structured domains.
Back to Top

GMesh Scripting - Structured and Semi-Structured Domain Options


GMesh.CreateStructuredDomain(*facesets)

GMesh.CreateAllStructuredDomains(faces)

GMesh.SmoothStructuredDomain(block, numiter, faces=0, bcs=0, spacings=0)

GMesh.CoarsenStructuredDomains(blocks, ifactor, jfactor, kfactor)

GMesh.Coarsen2DBlocks(blocks, ifactor, jfactor)

GMesh.Create2DBlock(faces)

GMesh.Reorient2DBlock(block, rot_k, propagate=0)

GMesh.ReorientStructuredDomain(block, rot_i, rot_j, rot_k, propagate=0)

GMesh.CreateCompositeStructuredDomain(blocks)

GMesh.CreateSemiStructuredDomain(bottom_srf,top_srf,faces)

GMesh.CreateStructuredDomain

Prototype
GMesh.CreateStructuredDomain(*facesets)
Description
Create a structured domain (i.e. block) from 2, 3, 4, 5, or 6 face sets.
Back to Top

470
CFD-GEOM Scripting

GMesh.CreateAllStructuredDomains

Prototype
GMesh.CreateAllStructuredDomains(faces)
Description
Create structured domain(s) from the input faces. At least 6 4-sided (i.e. non-degenerate) faces must be
input. Given these faces, CFD-GEOM will create 6-sided structured domains from every valid combination
of 6 faces. Any degenerate input faces are silently ignored.
Back to Top

GMesh.SmoothStructuredDomain

Prototype
GMesh.SmoothStructuredDomain(block, numiter, faces=0, bcs=0, spacings=0)
Description
Elliptically smooth a structured domain (i.e. block) for the specified number of iterations (a value of 0
unsmooths the block). If faces and bcs are non-NULL, apply the elliptic boundary conditions in bcs to the
corresponding faces. If any of the bcs is an ortho + spacing bc, apply the specified spacings to the
corresponding faces. Here are the rules:
* If faces is non-NULL, then so must bcs be non-NULL, and both must be of the same
length.
* If bcs contains an ortho+spacing bc, then spacings must be present and have a length
equal to bcs. A spacing of 0 means that spacing along the corresponding face is allowed to
float.
* Any input faces that aren't used by the block are silently ignored.
Valid elliptic bc values are
0 - fixed
1 - ortho
2 - ortho + spacing
Back to Top

GMesh.CoarsenStructuredDomains

Prototype
GMesh.CoarsenStructuredDomains(blocks, ifactor, jfactor, kfactor)
Description
Coarsen the specified structured domains (i.e. blocks) by the specified coarsening factors in I, J, K. A
coarsening factor of 1 in a direction means that no coarsening is applied in that direction (or, if any
coarsening was previously applied in that direction, that coarsening will be undone). A coarsening factor
greater than 1 indicates that coarsening by that amount will be applied in the corresponding direction. For
example, if a block has 8 cells in its I direction, a coarsening factor of 2 would reduce that number to 4 by
combining cells into polycells. A coarsening factor must be evenly divisible into the NUMBER OF CELLS
(not points) running in the corresponding direction.
Back to Top

471
CFD-GEOM V2014.0 User Manual

GMesh.Coarsen2DBlocks

Prototype
GMesh.Coarsen2DBlocks(blocks, ifactor, jfactor)
Description
Coarsen the specified 2-D blocks by the specified coarsening factors in I and J. A coarsening factor of 1 in a
direction means that no coarsening is applied in that direction (or, if any coarsening was previously
applied in that direction, that coarsening will be undone). A coarsening factor greater than 1 indicates
that coarsening by that amount will be applied in the corresponding direction. For example, if a block has
8 cells in its I direction, a coarsening factor of 2 would reduce that number to 4 by combining cells into
polycells. A coarsening factor must be evenly divisible into the NUMBER OF CELLS (not points) running in
the corresponding direction.
Back to Top

GMesh.Create2DBlock

Prototype
GMesh.Create2DBlock(faces)
Description
Create a 2-D block from the specified faces. Note that the faces must collectively form a logical IJ
topology. Note also that the faces should lie in a constant Z plane.
Back to Top

GMesh.Reorient2DBlock

Prototype
GMesh.Reorient2DBlock(block, rot_k, propagate=0)
Description
Reorient a 2D block. As in the block reorientation tool, reorientation is expressed as a rotation "rot_k"
about the K axis and is best described by an example. Suppose that you have a 2-D block whose I and J
axes are shown below.
J
.
.
.
.
........I
Where an imaginary K axis runs out of the screen. Suppose the you wish to reorient the block to give it the
following orientation:
........J
.
.
.
.
I

472
CFD-GEOM Scripting

This can be achieved by performing a clockwise, quarter rotation about the K axis (rot_k=1). This same
orientation could also be achieved by 3 counter-clockwise, quarter rotations about the K axis (rot_k=-3).
In general, each increment or decrement of rot_k (an integer) indicates a quarter rotation. Positive values
indicate clockwise rotations and negative values indicate counter-clockwise rotations. A value of 0
indicates that no reorientation will be applied to the input block. You may specify any integer for rot_k,
but you should generally specify -3, -2, -1, 0, 1, 2, or 3.
If "propagate" is 0 (FALSE), only the input block will be reoriented. If 1 (TRUE), the input block's new
orientation will be propagated recursively to all blocks reachable from the input block.
Back to Top

GMesh.ReorientStructuredDomain

Prototype
GMesh.ReorientStructuredDomain(block, rot_i, rot_j, rot_k, propagate=0)
Description
Reorient a structured domain (3D block) or a composite structured domain (composite block). As in the
block reorientation tool, reorientation is expressed as rotations "rot_i", "rot_j", and "rot_k" about the I, J,
and K axes respectively. This is best described by an example. Suppose that you have a structured domain
whose I and K axes are shown below (assume the J axis runs out of the screen).
I
.
.
.
.
........K
.
.
J
Suppose that you wish to reorient the block to give it the following orientation, where the K axis runs out
of the screen:
J
.
.
.
.
........I
.
.
K
This can be achieved by performing a clockwise, quarter rotation about the I axis (rot_i=1) to position the
K axis in the desired location-- followed by a clockwise, quarter rotation about the K axis (rot_k=1) to
position the I and J axes. rot_i, rot_j, and rot_k are integers where each increment represents a quarter
rotation about the respective axis. Positive values indicate clockwise rotations and negative values
indicate counter-clockwise rotations. A value of 0 indicates that no reorientation will be applied about the

473
CFD-GEOM V2014.0 User Manual

corresponding axis. You may specify any integers for the rotations, but you should generally specify -3, -2,
-1, 0, 1, 2, or 3. Any I rotations are applied before any J rotations, which are applied before any K
rotations.
If "propagate" is 0 (FALSE), only the input block will be reoriented. If 1 (TRUE), the input block's new
orientation will be propagated recursively to all blocks reachable from the input block.
Back to Top

GMesh.CreateCompositeStructuredDomain

Prototype
GMesh.CreateCompositeStructuredDomain(blocks)
Description
Create a Composite Block from the specified structured domains (i.e. blocks). Note that the blocks must
collectively form a logical IJK topology, and that at least 2 input blocks are required.
Back to Top

GMesh.CreateSemiStructuredDomain

Prototype
GMesh.CreateSemiStructuredDomain(bottom_srf, top_srf, faces)
Description
Create a semi-structured domain from the input surfaces and faces.
Back to Top

GMesh Scripting - Cartesian Options


SetCartRectangularBoundingBox
SetCartCylindricalBoundingBox
CreateCartDomainMarker
EditCartDomainMarker
CreateCartBoxSource
EditCartBoxSource
CreateCartSphereSource
EditCartSphereSource
CreateCartCylinderSource
EditCartCylinderSource
SetCartLocalSurfaceMeshingParams
SetCartBoundingBoxSurfaceMeshingParams
SetCartGlobalMeshingParams
GenerateCartesianMesh

474
CFD-GEOM Scripting

SetCartRectangularBoundingBox

Prototype
SetCartRectangularBoundingBox( xmin_type, xmin_val, xmax_type, xmax_val, ymin_type, ymin_val,
ymax_type, ymax_val, zmin_type, zmin_val, zmax_type, zmax_val)
Description
Set the parameters for the rectangular bounding box used for Cartesian mesh generation. If the bounding
box does not yet exist, it will be created. If the bounding box already exists, it will be redefined.
The bounding box parameters are defined by 6 type/value pairs. The "types" can have the following
integer values, which determine how the "val" values are to be interpreted, and which are best described
by example:
0: The corresponding "val" specifies the number of body lengths to offset to the left, right, above, below,
front, or back of the geometry.
Suppose that the geometry extends from 1 to 3 in the X direction; its length, dx, in the X direction is 2. If
xmin_type=0, and xmin_val=5, xmin_val will be interpreted as 5 body lengths from the minimum-X of the
geometry, and the actual xmin of the bounding box will be calculated as
geometry_xmin - xmin_val*dx (1 - 5*2 = -9)
1: The corresponding "val" will be interpreted as the distance from the corresponding geometry extreme.
Continuing the above example, if xmax_type=1 and xmax_val=50, the actual xmax of the bounding box
will be calculated as
geometry_xmax + xmax_val (3 + 50 = 53)
2: The corresponding "val" will be interpreted as the distance from the geometry center. Continuing the
above example, the center of the geometry is 2. If xmin_type=2 and xmin_val = 50, the actual xmin of the
bounding box is geometry_center - xmin_val (2 - 50 = -48)
3: The corresponding "val" will be interpreted as an absolute coordinate value.
If creating the bounding box, a handle to that bounding box is returned.

SetCartCylindricalBoundingBox

Prototype
SetCartCylindricalBoundingBox(xmin_type, xmin_val, xmax_type, xmax_val, ymin_type, ymin_val,
ymax_type, ymax_val, zmin_type, zmin_val, zmax_type, zmax_val, axis_dir, bodyfit)
Description
Set the parameters for a cylindrical bounding box used for Cartesian mesh generation. If the bounding box
does not yet exist, it will be created. If the bounding box already exists, it will be redefined.
The size and location are defined by 6 type/value pairs. These describe a rectangular box in which the
cylindrical bounding box is inscribed. For simplicity, the side of the cylindrical bounding box is divided into
4 parts, and thus the Cylinder-type bounding box is composed of 6 bounds, just like a rectangular
bounding box. The "types" can have the following integer values, which determine how the "val" values
are to be interpreted, and which are best described by example:
0: The corresponding "val" specifies the number of body lengths to offset to the left, right, above, below,
front, or back of the geometry. Suppose that the geometry extends from 1 to 3 in the X direction; its
length, dx, in the X direction is 2. If xmin_type=0, and xmin_val=5, xmin_val will be interpreted as 5 body
lengths from the minimum-X of the geometry, and the actual xmin of the bounding box will be calculated
as
geometry_xmin - xmin_val*dx (1 - 5*2 = -9)

475
CFD-GEOM V2014.0 User Manual

1: The corresponding "val" will be interpreted as the distance from the corresponding geometry extreme.
Continuing the above example, if xmax_type=1 and xmax_val=50, the actual xmax of the bounding box
will be calculated as
geometry_xmax + xmax_val (3 + 50 = 53)
2: The corresponding "val" will be interpreted as the distance from the geometry center. Continuing the
above example, the center of the geometry is 2. If xmin_type=2 and xmin_val = 50, the actual xmin of the
bounding box is
geometry_center - xmin_val (2 - 50 = -48)
3: The corresponding "val" will be interpreted as an absolute coordinate value.
Two additional parameters are required to describe a cylindrical bounding box.
axis_dir: an integer defining the alignment of the cylinder. 0 indicates that the cylinder will be aligned
with the X axis. 1 and 2 indicate the Y and Z axes, respectively.
bodyfit: If 1, the volume mesh will be projected onto the sides of the cylinder. If 0, this will not occur; this
results in a stairstep type mesh along the cylinder walls.
If creating the bounding box, a handle to that bounding box is returned.

CreateCartDomainMarker

Prototype
CreateCartDomainMarker( x, y, z, x_div, y_div, z_div)
Description
Create a domain marker for Cartesian meshing. During Cartesian meshing, the nature of the meshing
algorithm requires that it fill the entire Cartesian bounding box with cells. Domain marker entities are
used to specify the portion(s) of the mesh that are to be preserved at the end of meshing. A domain
marker is a special type of point placed somewhere in the volume to be preserved. For example, if a
domain marker is placed anywhere between the geometry and the bounding box, that portion of the
mesh between the geometry and the bounding box will be preserved in the final mesh. A domain marker
is similar to other volumetric entities in CFD-GEOM (e.g. unstructured domains) in that it is bounded by
surfaces and can be assigned volume conditions. However, it differs in that the surfaces don't have to be
grouped manually or even to form a watertight collection. Instead, the boundaries of the domain marker
are determined during the meshing process. A domain marker is defined by
x, y, z: the coordinates of a point within the region of interest.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the region. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the region. That
is, at the end of meshing, all cells in the volume will, at a minimum, have been refined to these levels
(other meshing parameters may have caused even further refinement).
This function returns a handle to the new domain marker.

EditCartDomainMarker

Prototype
EditCartDomainMarker(marker, x, y, z, x_div, y_div, z_div)
Description
Edit an existing Cartesian domain marker created by the function CreateCartDomainMarker(). See that
function for details on the input parameters.

476
CFD-GEOM Scripting

CreateCartBoxSource

Prototype
CreateCartBoxSource(start_x, start_y, start_z, end_x, end_y, end_z, x_div, y_div, z_div)
Description
Create a box source for Cartesian meshing. A box source is used to refine the mesh within a 3-D box
aligned with the X, Y, and Z axes. The box is defined by
start_x, start_y, start_z: the coordinates of one corner of the box.
end_x, end_y, end_z: the coordinates of the opposite corner.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the source. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the source. At the
beginning of meshing, the mesher will recursively split the bounding box into a minimum number of cells.
Afterwards, it will perform additional splits in the sources. Suppose, for example, that the global minimum
number of divisions is 4 in each direction. Now suppose that you've added a cylinder source with
minimum division levels of 7 in each direction. The mesher, after performing 4 levels of global splits, will
perform 3 additional levels of splits inside the source.
This function returns a handle to the new source.

EditCartBoxSource

Prototype
EditCartBoxSource(source, start_x, start_y, start_z, end_x, end_y, end_z, x_div, y_div, z_div)
Description
Modify the settings on an existing Cartesian box source. The box is defined by
start_x, start_y, start_z: the coordinates of one corner of the box.
end_x, end_y, end_z: the coordinates of the opposite corner.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the source. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the source. At the
beginning of meshing, the mesher will recursively split the bounding box into a minimum number of cells.
Afterwards, it will perform additional splits in the sources. Suppose, for example, that the global minimum
number of divisions is 4 in each direction. Now suppose that you've added a cylinder source with
minimum division levels of 7 in each direction. The mesher, after performing 4 levels of global splits, will
perform 3 additional levels of splits inside the source.
This function returns a handle to the new source.

CreateCartSphereSource

Prototype
CreateCartSphereSource(center_x, center_y, center_z, radius, x_div, y_div, z_div)
Description
Create a sphere source for Cartesian meshing. A sphere source is used to refine the mesh within a given
distance from a central point. The sphere is defined by:
center_x, center_y, center_z: the coordinates of the center of the sphere.
radius: The radius of the sphere. This value must be greater than 0.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the source. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the source. At the
beginning of meshing, the mesher will recursively split the bounding box into a minimum number of cells.

477
CFD-GEOM V2014.0 User Manual

Afterwards, it will perform additional splits in the sources. Suppose, for example, that the global minimum
number of divisions is 4 in each direction. Now suppose that you've added a cylinder source with
minimum division levels of 7 in each direction. The mesher, after performing 4 levels of global splits, will
perform 3 additional levels of splits inside the source.
This function returns a handle to the new source.

EditCartSphereSource

Prototype
EditCartSphereSource(source, center_x, center_y, center_z, radius, x_div, y_div, z_div)
Description
Modify the settings on an existing Cartesian sphere source. The sphere is defined by:
center_x, center_y, center_z: the coordinates of the center of the sphere.
radius: The radius of the sphere. This value must be greater than 0.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the source. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the source. At the
beginning of meshing, the mesher will recursively split the bounding box into a minimum number of cells.
Afterwards, it will perform additional splits in the sources. Suppose, for example, that the global minimum
number of divisions is 4 in each direction. Now suppose that you've added a cylinder source with
minimum division levels of 7 in each direction. The mesher, after performing 4 levels of global splits, will
perform 3 additional levels of splits inside the source.

CreateCartCylinderSource

Prototype
CreateCartCylinderSource(bottom_center_x, bottom_center_y, bottom_center_z, axis_dx, axis_dy,
axis_dz, axis_length, inner_radius, outer_radius, x_div, y_div, z_div)
Description
Create a cylinder source for Cartesian meshing. A cylindrical source is used to refine the mesh between an
interior radius and exterior radius region. The cylinder is defined by:
bottom_center_x, bottom_center_y, bottom_center_z: the coordinates of the bottom center of the
cylinder.
axis_dx, axis_dy, axis_dz: vector specifying the direction of the cylinder axis.
axis_length: the length of the cylinder. Note that, if the vector specifying the cylinder axis direction is
normalized, axis_length will be the actual length of the cylinder. If not, the actual cylinder length will be
the axis_length multiplied by the length of the direction vector.
inner_radius: the inner radius of the cylindrical region. This may be 0, and must be less than the
outer_radius.
outer_radius: the outer radius of the cylindrial region. This must be greater than the inner radius.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the source. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the source. At the
beginning of meshing, the mesher will recursively split the bounding box into a minimum number of cells.
Afterwards, it will perform additional splits in the sources. Suppose, for example, that the global minimum
number of divisions is 4 in each direction. Now suppose that you've added a cylinder source with
minimum division levels of 7 in each direction. The mesher, after performing 4 levels of global splits, will
perform 3 additional levels of splits inside the cylinder source.
This function returns a handle to the new source.

478
CFD-GEOM Scripting

EditCartCylinderSource

Prototype
EditCartCylinderSource(source, bottom_center_x, bottom_center_y, bottom_center_z, axis_dx, axis_dy,
axis_dz, axis_length, inner_radius, outer_radius, x_div, y_div, z_div)
Description
Modify the settings on an existing Cartesian cylinder source. The cylinder is defined by:
bottom_center_x, bottom_center_y, bottom_center_z: the coordinates of the bottom center of the
cylinder.
axis_dx, axis_dy, axis_dz: vector specifying the direction of the cylinder axis.
axis_length: the length of the cylinder. Note that, if the vector specifying the cylinder axis direction is
normalized, axis_length will be the actual length of the cylinder. If not, the actual cylinder length will be
the axis_length multiplied by the length of the direction vector.
inner_radius: the inner radius of the cylindrical region. This may be 0, and must be less than the
outer_radius.
outer_radius: the outer radius of the cylindrial region. This must be greater than the inner radius.
x_div, y_div, z_div: These parameters control the amount of refinement to perform in the source. They
specify the minimum number of divisions to perform in the X, Y, and Z directions within the source. At the
beginning of meshing, the mesher will recursively split the bounding box into a minimum number of cells.
Afterwards, it will perform additional splits in the sources. Suppose, for example, that the global minimum
number of divisions is 4 in each direction. Now suppose that you've added a cylinder source with
minimum division levels of 7 in each direction. The mesher, after performing 4 levels of global splits, will
perform 3 additional levels of splits inside the cylinder source.

SetCartLocalSurfaceMeshingParams

Prototype
SetCartLocalSurfaceMeshingParams(surfaces, *args)
Description
Set local Cartesian meshing parameters on the input list of trimmed and/or discrete surfaces (to set
parameters on the 6 bounding box surfaces, use SetCartBoundingBoxSurfaceMeshingParams()). Meshing
parameters are expressed as a variable length set of option "groups", where each group consists of a
string indicating the name of the option being set, followed by a variable number of arguments whose
number and type(s) depend on the name of the option. A call to this function takes the form
GMesh.SetCartLocalSurfaceMeshingParams(
surfaces,
option_group1, # first group of options
... # additional groups of options
)
Valid option groups include:
"thinwall", value : A value of 1 (enable) tags surfaces for special Thin Wall treatment during mesh
generation. Ordinarily, such surfaces should lie in the interior of a volume rather than on the boundaries
of that volume. That is, cells from the same volume (domain) will lie on both sides of such surfaces. Thin
Walls can be used to represent baffles, plates, etc. whose thickness is negligible and need not be meshed,
but whose area is non-negligible and can impact the physics of a problem (such as momentum and heat
transfer). Setting the Thin Wall option on a surface instructs the Cartesian mesher that, during the
meshing process, the meshes on any flagged surfaces should be included in the final mesh. Moreover, it

479
CFD-GEOM V2014.0 User Manual

permits the assignment of boundary conditions to those surfaces and subsequent output to DTF. Finally, it
adds special data to those surfaces that assists downstream applications in identifying thin wall surfaces.
A value of 0 disables Thin Wall treatment of the surfaces. This is the default.
"suppress", value: Suppress (value=1) or unsuppress (value=0) the input surfaces. Suppressing a surface
makes it 'invisible' to the mesher during subsequent mesh generation. This means that, although the
surface remains in the model, it does not participate in any meshing operations.
"boundary_layers", value: Enable (value=1) or disable (value=0) boundary layer meshing for the input
surfaces. If enabled AND if boundary layer meshing is globally enabled, boundary layers will be generated
off the input surfaces. Currently, other boundary layer parameters such as the first layer thickness, growth
factor, and number of layers can only be set globally.
There are 3 options for specifying basic surface refinement settings. Note that, for any particular surface,
these 3 options are mutually exclusive.
"use_global_srf_refinement": Use the global surface refinement settings set by
SetCartGlobalMeshingParams(). This is the default behavior.
"use_local_srf_refinement_levels", lev_x, lev_y, lev_z: Locally specify the number of levels of
refinement in the X, Y, and Z directions using the 3 integer arguments lev_x, lev_y, and lev_z. These must
be greater than or equal to 2 and should ordinarily be larger than the corresponding global settings.
Exception: a value of -1 for a parameter indicates that setting for the input surfaces will not be modified.
For example, the values 8, 8, -1 indicate that lev_x and lev_y for the input surfaces will be set to 8, while
lev_z will remain unchanged.
"use_local_srf_refinement_norm_tang", norm, tang: Locally specify the local normal and tangential cell
sizes. Ordinarily, the tangential size should be twice the the normal size. There are 2 options for
controlling settings for the bodyfit factor. The bodyfit factor controls the amount of effort the meshing
algorithm expends to project near geometry mesh nodes onto the geometry. A value of 100% means that
the mesher will attempt to place these nodes exactly on the geometry. Smaller values allow the mesher
more freedom to place these nodes slightly away from the geometry. Though this results in a lower
fidelity mesh, it can sometimes be useful in attaining higher mesh quality. Note that bodyfit settings apply
only during projected single-domain meshing and will be ignored otherwise. Note also that, for any
particular surface, these 2 options are mutually exclusive.
"use_global_bodyfit_factor": Use the global bodyfit factor, which defaults to 100 if not changed in
SetCartGlobalMeshingParams().
"use_local_bodyfit_factor", bodyfit_factor: Use the specified local bodyfit_factor. bodyfit_factor must be
an integer in the range 0-100.
There are 3 options for specifying curvature refinement settings, which allow you to locally control
refinement in regions with sharp edges or high curvature. Refinement Factor is the ratio of the requested
surface cell size (see surface refinement settings above) to the final cell size. In other words, the higher
the value the more intense is the refinement around sharp edges and other regions of high curvature. The
Feature Angle indicates that additional refinement will be performed where curvature on the selected
surfaces exceeds this angle. Note that, for any particular surface, the following 3 options are mutually
exclusive. If none of these options is specified, global settings specified in SetCartGlobalMeshingParams()
are used.
"use_global_curvature_refinement": Use the global curvature refinement settings specified in
SetCartGlobalMeshingParams(). This is the default.
"disable_local_curvature_refinement": Locally disable curvature refinement on the selected surfaces.
"enable_local_curvature_refinement", refinement_factor, feature_angle: Locally enable curvature
refinement on the selected surfaces. Two additional arguments are required. refinement_factor is a real
number in the range [1,10000]. The default is 1.4. feature_angle is a real number in the range [10,90]. The

480
CFD-GEOM Scripting

default is 35. For both of these arguments, a value of -1 is allowed. This indicates that the value for the
corresponding argument will remain unchanged.
There are 2 additional arguments for controlling outline/feature preservation. These options are not
mutually exclusive.
"preserve_features", value: Locally set the feature preservation option. value must be either 0 (use global
setting), 1 (locally enable), or 2 (locally disable). If locally enabled, the mesh generator will try to capture
sharp features locally on the selected surfaces. Note that the capturing of features may not be 100%
successful. Also, this operation is computationally expensive. If the "preserve_features" option is not
specified, this setting defaults to the use of the global setting.
"preserve_outlines", value: Locally set the outline preservation option. value must be either 0 (use global
setting), 1 (locally enable), or 2 (locally disable). If enabled, this causes the mesher to capture explicit
boundaries (boundary between adjoining surfaces) as well as implicit boundaries (intersection of
overlapping parts, etc.) locally on the selected surfaces. Note that this option is especially useful when it
comes to capturing the boundary between adjoining coplanar surfaces. Such boundaries are invisible to
the above mentioned "preserve_features" since the dihedral angle is 0 in this situation. Note that free
boundaries and very small features may not be captured very well. Note also that this setting is used only
during projected single-domain meshing and is otherwise ignored. If the "preserve_outlines" option is not
specified, this setting defaults to the use of the global setting.
Example:
GMesh.SetCartLocalSurfaceMeshingParams(
[srf1, srf2],
'use_local_srf_refinement_levels', 8, 8, 8,
'boundary_layers', 1,
'enable_local_curvature_refinement', 1.4, 35
)
Note that all unspecified options will be set to default values (unless set in a previous call to this function).

SetCartBoundingBoxSurfaceMeshingParams

Prototype
SetCartBoundingBoxSurfaceMeshingParams(surface_indices, *args)
Description
Set local Cartesian meshing parameters on the input list of bounding box surfaces. These surfaces are
identified by integers as follows:
0: xmin
1: xmax
2: ymin
3: ymax
4: zmin
5: zmax
Meshing parameters are expressed as a variable length set of option "groups", where each group consists
of a string indicating the name of the option being set, followed by a variable number of arguments
whose number and type(s) depend on the name of the option. A call to this function takes the form
GMesh.SetCartBoundingBoxSurfaceMeshingParams(

481
CFD-GEOM V2014.0 User Manual

surfaces,
option_group1, # first group of options
... # additional groups of options
)
Valid option groups include:
"boundary_layers", value: Enable (value=1) or disable (value=0) boundary layer meshing for the input
surfaces. If enabled AND if boundary layer meshing is globally enabled, boundary layers will be generated
off the input surfaces. Currently, other boundary layer parameters such as the first layer thickness, growth
factor, and number of layers can only be set globally. By default, boundary layer meshing is disabled for
bounding box surfaces.
"constrain_boundary_layers", value: This option, when enabled (value=1) allows you to use a bounding
box surface to constrain boundary layer growth from adjacent geometric or bounding box surfaces. In
such cases, the boundary layers at the adjacency will be projected onto the constraining surface. By
default, this option is disabled, which indicates that the boundary layers at the adjacency will be joined
with the boundary layers of the adjacent surface, or pinched off if boundary layers are not being
generated on the adjacent surface. Note that if you enable both boundary layer growth and boundary
layer constraint for a surface, boundary layer constraint takes precedence. Note also that this option is
ignored during mesh generation if boundary layer meshing is not globally enabled.
There are 3 options for specifying basic surface refinement settings. Note that, for any particular surface,
these 3 options are mutually exclusive.
"use_global_srf_refinement": Use the global surface refinement settings set by
SetCartGlobalMeshingParams(). This is the default behavior.
"use_local_srf_refinement_levels", lev_x, lev_y, lev_z: Locally specify the number of levels of refinement
in the X, Y, and Z directions using the 3 integer arguments lev_x, lev_y, and lev_z. These must be greater
than or equal to 2 and should ordinarily be larger than the corresponding global settings. Exception: a
value of -1 for a parameter indicates that setting for the input surfaces will not be modified. For example,
the values 8, 8, -1 indicate that lev_x and lev_y for the input surfaces will be set to 8, while lev_z will
remain unchanged.
"use_local_srf_refinement_norm_tang", norm, tang: Locally specify the local normal and tangential cell
sizes. Ordinarily, the tangential size should be twice the the normal size.
Example:
GMesh.SetCartBoundingBoxSurfaceMeshingParams(
[2, 3],
'use_local_srf_refinement_levels', 8, 8, 8,
'boundary_layers', 1
)
Note that in the above example, all unspecified options will be set to default values (unless set in a
previous call to this function).

SetCartGlobalMeshingParams

Prototype
SetCartGlobalMeshingParams(*args)
Description
Set global Cartesian meshing parameters. These meshing parameters are expressed as a variable length
set of option "groups", where each group consists of a string indicating the name of the option being set,

482
CFD-GEOM Scripting

followed by a variable number of arguments whose number and type(s) depend on the name of the
option. A call to this function takes the form
GMesh.SetCartGlobalMeshingParams(
surfaces,
option_group1, # first group of options
... # additional groups of options
)
Valid groups include:
"mesh_type", mt : mt is an integer indicating the meshing algorithm to use. A value of 2 instructs the
mesher to use the Multi Domain intersection algorithm to bodyfit the mesh to the geometry. It can be
used regardless of the number of domain markers. A value of 1 instructs the mesher to use the Projected
Single Domain method, which uses a projection algorithm to shrinkwrap the mesh onto the geometry. It
can be used only when there is exactly one domain marker. If this group is not specified, the multi-domain
meshing algorithm will be used.
"tree_type", tt : tt is an integer indicating the tree type. Valid values for tt include 0 (omnitree) and 1
(octree). If this group is not specified, the tree type defaults to omnitree. You should seldom need to
change this.
"autogen_domain_markers", ag : ag is an integer indicating whether domain markers should be
automatically generated. If 1 (true), the mesher will generate domain markers in each logical subvolume
identified during meshing (except where they already exist). If 0 (false), meshes will be generated only in
those regions where domain markers have already been defined.
If this group is not specified, domain markers will not be automatically generated. Note also that this
option is applicable only when the multi-domain meshing algorithm is to be used. See "mesh_type"
above.
"min_div_levels", min_div_x, min_div_y, min_div_z : where the last 3 arguments are integers specifying
the minimum number of divisions to perform in the X, Y, and Z directions, respectively. For example, if the
width of the bounding box in the X direction is "dx", the maximum allowable cell size in the X direction is
dx/(2^min_div_x). If this group is not specified, the system defaults to 4 for each value.
"srf_refinement_levels", levx, levy, levz : This instructs the mesher to base global surface refinement on
"division levels". During the initial refinement at the geometry, all cells at the geometry will be split to the
specified integer levels levx, levy, levz in the X, Y, and Z directions, respectively. For example, if the width
of the bounding box in the X direction is "dx", the near-geometry cell size in the X direction is dx/(2^levx).
If this group is not specified, the system defaults to 8 for each value. Note that these settings can be
locally overridden in the function SetCartLocalSurfaceMeshingParams(). Note also that other factors, such
as curvature refinement and sources can cause additional refinement along surfaces. This option and
"srf_refinement_norm_tang" (see below) are mutually exclusive.
"srf_refinement_norm_tang", norm, tang : This instructs the mesher to base global surface refinement
on normal and tangential cell sizes, specified by the additional real arguments norm and tang. Note that in
general, you should specify a tangential size twice as large as the normal size. This option and
"srf_refinement_levels" (see above) are mutually exclusive. If neither option is specified, the refinement
method defaults to "srf_refinement_levels" with default values for the levels. Note that these settings can
be locally overridden in the functionSetCartLocalSurfaceMeshingParams(). Note also that other factors,
such as curvature refinement and sources can cause additional refinement along surfaces.
"bodyfit_factor", factor : This option globally controls the bodyfit factor during projected single-domain
meshing. This factor (an integer between 0 and 100) controls the amount of effort the meshing algorithm
expends to project near geometry mesh nodes onto the geometry. A value of 100% means that the
mesher will attempt to place these nodes exactly on the geometry. Smaller values allow the mesher more
freedom to place these nodes slightly away from the geometry. Though this results in a lower fidelity

483
CFD-GEOM V2014.0 User Manual

mesh, it can sometimes be useful in attaining higher mesh quality. If this group is not specified, this value
defaults to 100.
"enable_boundary_layers", growth_type, first_layer_thickness, growth_factor, numlayers : Globally
enable boundary layer growth. "growth type" specifies how "first_layer_thickness" is to be interpreted. If
growth_type is 0, first_layer_thickness (a real) is interpreted as an absolute value. If growth_type is 1,
first_layer_thickness is interpreted as a fraction of the local face size on the geometry. "growth_factor", a
real, specifies how quickly the thickness transitions from layer to layer. In general, this value should be
greater than 1, but values between 0 and 1 are permitted. "num_layers", an integer, specifies the number
of layers desired. The mesher will attempt to honor this value, but will reduce the number of layers where
necessary. If this group is not specified, boundary layer growth is disabled by default.
"disable_boundary_layers" : Globally disable all boundary layer growth. This is the default if
"enable_boundary_layers" (see above) is not specified.
"num_cartesian_layers_at_srfs", num : num is an integer specifying the number of Cartesian layers to
generate around the surface geometry. For example, if the local surface mesh size is "x" and you specify 3
Cartesian layers, 3 layers of Cartesian cells of this size will be grown away from the geometry in the
vicinity. After this, the mesher is free to coarsen the mesh as needed. Note that this option should not be
confused with boundary layers. The default value for this option is 0 if this group is not specified.
"num_cartesian_layers_at_refinement_level", num : With this option, you can specify the minimum
number of Cartesian cell layers that need to be generated at each refinement level. The default value is 1.
The larger this integer value, the slower the transition from dense to coarser mesh. In general if a
smoother mesh is needed, the value should be greater than 2. But increasing the value will increase the
overall cell count significantly. Thus, an optimal value needs to be chosen considering the pros (smoother
mesh) and cons (increase in number of cells). The default value is 1.
"enable_curvature_refinement", refinement_factor, feature_angle : This option allows you to globally
control refinement in regions with sharp edges or high curvature. refinement_factor is the ratio of the
specified surface cell size to the final cell size. In other words, the higher the value the more intense is the
refinement around sharp edges and other regions of high curvature. The default value is 1.4. The
feature_angle indicates that additional refinement will be performed where curvature on the selected
surfaces exceeds this angle. The default is 35 degrees. These options can be locally overridden
SetCartLocalSurfaceMeshingParams(). By default curvature refinement is enabled.
"disable_curvature_refinement" : Globally disable curvature refinement described above. Note that it is
possible to re-enable this refinement locally using SetCartLocalSurfaceMeshingParams().
"preserve_features", value : If enabled (value=1), the mesh generator will try to capture sharp features in
the geometry, globally. Note that the capturing of features may not be 100% successful. Also, this
operation is computationally expensive. To disable, specify value=0. By default this option is disabled.
"preserve_outlines", value : When enabled (value=1), the mesher will attempt to capture explicit
boundaries (boundary between adjoining patches) as well as implicit boundaries (intersection of
overlapping parts, etc.). Note that this option is especially useful when it is necessary to capture the
boundary between adjoining coplanar patches. Such boundaries are invisible to the above mentioned
"preserve_features" option since the dihedral angle is 0 in this situation. Note that free boundaries and
very small features may not be captured very well. To disable, specify value=0. By default this option is
disabled. This option is used only during projected single-domain meshing.
"smooth_interior_nodes", value : When enabled (value=1), interior nodes will be smoothed with a face-
area weighted Laplacian smoothing method. Note that, here, interior nodes are those nodes between the
boundary and Cartesian cells. To disable, specify value=0. By default this option is disabled. Smoothing
interior nodes could improve mesh quality in some cases.
"smooth_boundary_nodes", value : When enabled (value=1), the boundary nodes will be smoothed with
a face-area weighted Laplacian smoothing method. Smoothing boundary nodes tends to generate better
quality cells, but the nodes may not lie exactly on the geometry and thus sharp features may be washed

484
CFD-GEOM Scripting

out. To disable, set value=0. By default this option is disabled. This option is used only during projected
single-domain meshing.
Example:
GMesh.SetCartGlobalMeshingParams(
'mesh_type', 2,
'srf_refinement_levels', 8, 7, 7
)
Specifies that the multidomain meshing algorithm should be used with a division-level-based surface
refinement scheme using 8, 7, and 7 division levels in X, Y, and Z, respectively.
Note that all unspecified options will be set to default values (unless set in a previous call to this function).

GenerateCartesianMesh

Prototype
GenerateCartesianMesh()
Description
Generate a Cartesian mesh using the meshing parameters specified in SetCartGlobalMeshingParams(). If
the "mesh_type" parameter was specified to that function, that mesh type will be generated. If that
parameter was not specified, the mesh type defaults to multi-domain intersecting mesh. Upon success,
this function returns a handle to any pseudo surfaces and domain markers generated during the meshing
process.

GMesh Scripting - Filament Options


GMesh.CreateFilament(edges, default_radius, numsides, multivc=0)

GMesh.ModifyFilament(filament, default_radius, numsides, multivc=0, points=0, radii=0)

GMesh.CreateFilament

Prototype
GMesh.CreateFilament(edges, default_radius, numsides, multivc=0)
Description
Create a filament with the specified default radius and number of sides across the input edges. The
default radius is the radius value used where local radius values have not been assigned via
ModifyFilament(). It should be greater than 0 and should be small enough not to cause mesh folding at
branches (if present). Note that numsides must be at least 4 and evenly divisible by 2. If "multivc" is set to
1 (TRUE), the cells constructed around each edge will be grouped separately from those around other
edges for the purposes of volume condition assignment in CFD-ACE-GUI. This argument is optional and
defaults to 0 (FALSE) if not specified. It is ignored if the number of edges is less than 2.
Back to Top

485
CFD-GEOM V2014.0 User Manual

GMesh.ModifyFilament

Prototype
GMesh.ModifyFilament(filament, default_radius, numsides, multivc=0, points=0, radii=0)
Description
Modify the specified filament. "default_radius", "numsides", and "multivc" have the same meanings as in
CreateFilament(). "points", if specified, contains edge endpoints (within the filament) at which we want to
set local radius values. "radii", which must be specified if "points" is specified, contains those radii. The
number of such radii must equal the number of points. Note that specifying a local radius of 0 instructs
CFD-GEOM to use the default radius around the corresponding point.
Back to Top

GMesh Scripting - Mesh Query Options


GMesh.GetNumCells()

GMesh.GetNumCells

Prototype
GMesh.GetNumCells()
Description
Return the total number of cells in the current model.
Back to Top

FileIO Scripting Functions

GFileIO Scripting Options


GFileIO.ImportGGD(filename)

GFileIO.SaveGGD(filename, save_volume_meshes=0)

GFileIO.ImportIGES(filename, use_model_relative_precision, model_relative_precision_factor)

GFileIO.ExportIGES(filename, write_points, units)

GFileIO.ExportDTF(filename, mode, update, units, autoname)

GFileIO.ExportSimplifiedDTF(filename, mode, update, units)

GFileIO.ImportSAT(filename, heal, process_type, use_precision_relative_to_model_size=0, precision=1e-6)

GFileIO.ImportParasolid(filename, heal, process_type, use_precision_relative_to_model_size, precision)

486
CFD-GEOM Scripting

GFileIO.ImportSTEP(filename, heal, process_type, use_precision_relative_to_model_size, precision)

GFileIO.ImportProEngineer(filename, heal, process_type, use_precision_relative_to_model_size, precision)

GFileIO.ImportUnigraphics(filename, heal, process_type, use_precision_relative_to_model_size, precision)

GFileIO.ImportSolidWorks(filename, heal, process_type, use_precision_relative_to_model_size, precision)

GFileIO.ImportCatiaV4(filename, heal, process_type, use_precision_relative_to_model_size, precision)

GFileIO.ImportCatiaV5(filename, heal, process_type, use_precision_relative_to_model_size, precision)

GFileIO.ImportSTL(filename, extract_discrete_surfaces, extract_points_and_lines)

GFileIO.ImportNASTRAN(filename, extract_discrete_surfaces, extract_points_and_lines)

GFileIO.ImportPATRAN(filename, extract_discrete_surfaces, extract_points_and_lines)

GFileIO.ImportGGD

Prototype
GFileIO.ImportGGD(filename)
Description
# Import the specified GGD file into the current model. Note that this capability is not available in the
CFD-GEOM GUI, and its usage in Python scripts is severely limited. Please note the following restrictions:
1. This command, if used, must be executed before any other CFD-GEOM script functions (exception: if your
script contains a call to GUtils.StartGeom(), then GFileIO.ImportGGD(...) should be executed after that
function).
2. This command can be executed only once in a CFD-GEOM script.
All entities restored from the GGD file are returned to Python through an entity dictionary. Below is an
example of its usage.
ggd_entities = GFileIO.ImportGGD('model.ggd')
Note the following additional behaviors:
1. Currently, entity names in the GGD file are not restored. For example, if your GGD file
contains a line named "geom_line2", that name will be lost. To access the line, you will
need to refer to it via the entity dictionary returned by this function. This behavior is
necessary to avoid conflicts between names in the GGD file and names for new entities
generated by your script. This problem may be remedied in a future release.
2. You should exercise caution when saving GGD files after calling this function. For
example, if you import 'model.GGD', generate some new entities in your script, and save
(using SaveGGD()) to 'model.GGD', your script will behave differently during subsequent
runs.
Inputs
A filename.
Return Value
None.

487
CFD-GEOM V2014.0 User Manual

Back to Top

GFileIO.SaveGGD

Prototype
SaveGGD( filename, save_volume_meshes=0 )
Description
Save the current model to a GGD file with the specified name. If the filename has a .gz extension, the file
will be automatically compressed with gzip. There is one additional argument:
save_volume_meshes: If 1 (TRUE), tetrahedral meshes generated on unstructured domains will be saved.
The default is 0 (FALSE). Note that, currently, polyhedral meshes (e.g. honeycomb, Cartesian) are not
saved to GGD regardless of this setting.

Back to Top

GFileIO.ImportIGES

Prototype
GFileIO.ImportIGES(filename, use_model_relative_precision, model_relative_precision_factor)
Description
Import the specified IGES file into the current model. The argument use_model_relative_precision, if 1
(TRUE), specifies that CFD-GEOM should use a geometric precision relative to the model dimensions
multiplied by the supplied factor. If 0 (FALSE), CFD-GEOM uses an absolute precision as defined in the
IGES file.
Note that the entities created during the import are returned through an entity dictionary. In general,
you'll likely want to assign the output to some variable representive of a part name. For example, you
might do something like the following:
impeller = GFileIO.ImportIGES('impeller.igs', 1, 1e-4)
Back to Top

GFileIO.ExportIGES

Prototype
GFileIO.ExportIGES(filename, write_points, units)
Description
Export the current model to an IGES file with the specified name. The parameter "write_points" should be
either 0 (FALSE) or 1 (TRUE). If 1, point entities are written to the file. If 0, they are not (this can help
reduce file size). Valid units are defined as follows:
0 (METERS)
1 (FEET)
2 (INCHES)
3 (MILLIMETERS)
4 (CENTIMETERS)
5 (MICRONS)
6 (KILOMETERS)

488
CFD-GEOM Scripting

7 (MILES)
8 (MILS)
9 (NANOMETERS)
If "units" is not specified, or is -1, the current model units are used (see GUtils.SetUnits()).
Back to Top

GFileIO.ExportDTF

Prototype
GFileIO.ExportDTF(filename, mode, update, units, autoname)
Description
Export the mesh(es) in the current model to a DTF file with the specified name. "mode" specifies the
dimensionality of the meshes and can be 2 (2-D) or 3 (3-D). "update" specifies whether to update the file.
This option is meaningful only if the DTF file already exists. Specifying 1 (TRUE) means that CFD-GEOM
should attempt to update the grids in the file without altering boundary and volume condition data.
Specifying 0 (FALSE) indicates that the existing file should be overwritten. Valid units are defined as
follows:
0 (METERS)
1 (FEET)
2 (INCHES)
3 (MILLIMETERS)
4 (CENTIMETERS)
5 (MICRONS)
6 (KILOMETERS)
7 (MILES)
8 (MILS)
9 (NANOMETERS)
If "units" is not specified, or is -1, the current model units are used (see GUtils.SetUnits()).
If "autoname" is set to 1 (TRUE), CFD-GEOM will automatically name BC's and create BC groups based on
VC names and BC types. Use this option with caution as it will overwrite any previously assigned BC
names. Please refer to (link to BC tool) to learn more about the recommended workflow for automatically
naming BCs. If this option is not specified, or is set to 0 (FALSE), it is disabled.

Back to Top

GFileIO.ExportSimplifiedDTF

Prototype
GFileIO.ExportSimplifiedDTF(filename, mode, update, units)
Description
Export the mesh(es) in the current model to a simplified DTF file with the specified name. Unlike
ExportDTF, this function will minimize the number of output volumes and surfaces-thus reducing the
number of boundary and volume conditions that must be assigned in downstream applications. "mode"
specifies the dimensionality of the meshes and can be 2 (2-D) or 3 (3-D). Alternatively, "mode" can be a
list of entities whose meshes are to be output. "update" specifies whether to update the file. This option

489
CFD-GEOM V2014.0 User Manual

is meaningful only if the DTF file already exists. Specifying 1 (TRUE) means that CFD-GEOM should attempt
to update the grids in the file without altering boundary and volume condition data. Specifying 0 (FALSE)
indicates that the existing file should be overwritten. Valid units are defined as follows:
0 (METERS)
1 (FEET)
2 (INCHES)
3 (MILLIMETERS)
4 (CENTIMETERS)
5 (MICRONS)
6 (KILOMETERS)
7 (MILES)
8 (MILS)
9 (NANOMETERS)
If "units" is not specified, or is -1, the current model units are used (see GUtils.SetUnits()).

Back to Top

GFileIO.ImportSAT

Prototype
GFileIO.ImportSAT(filename, heal, process_type, use_precision_relative_to_model_size=0, precision=1e-
6)
Description
Import the specified SAT (Standard ACIS text) file into the current model. Note that the "heal" argument
(an integer) is currently unused and is reserved for future usage; you should specify a value of 0 for this
argument. "process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Below is an example of its usage:
entities = GFileIO.ImportSAT('model.sat', 0, 1, 1, 1.0e-6)

Back to Top

GFileIO.ImportParasolid

Prototype
GFileIO.ImportParasolid(filename, heal, process_type, use_precision_relative_to_model_size, precision)
Description

490
CFD-GEOM Scripting

Import the specified Parasolid file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms and the 32-bit Linux platform.
Below is an example of its usage:
entities = GFileIO.ImportParasolid('model.x_t', 0, 1, 1, 1.0e-6)

Back to Top

GFileIO.ImportSTEP

Prototype
GFileIO.ImportSTEP(filename, heal, process_type, use_precision_relative_to_model_size, precision)
Description
Import the specified STEP file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms and the 32-bit Linux platform.
Below is an example of its usage:
entities = GFileIO.ImportSTEP('model.stp', 0, 1, 1, 1.0e-6)

Back to Top

GFileIO.ImportProEngineer

Prototype

491
CFD-GEOM V2014.0 User Manual

GFileIO.ImportProEngineer(filename, heal, process_type, use_precision_relative_to_model_size,


precision)
Description
Import the specified ProEngineer file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms and the 32-bit Linux platform.
Below is an example of its usage:
entities = GFileIO.ImportProEngineer('model.prt', 0, 1, 1, 1.0e-6)

Back to Top

GFileIO.ImportUnigraphics

Prototype
GFileIO.ImportUnigraphics(filename, heal, process_type, use_precision_relative_to_model_size,
precision)
Description
Import the specified Unigraphics file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms and the 32-bit Linux platform.
Below is an example of its usage:
entities = GFileIO.ImportUnigraphics('model.prt', 0, 1, 1, 1.0e-6)

Back to Top

492
CFD-GEOM Scripting

GFileIO.ImportSolidWorks

Prototype
GFileIO.ImportSolidWorks(filename, heal, process_type, use_precision_relative_to_model_size, precision)
Description
Import the specified SolidWorks file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms.
Below is an example of its usage:
entities = GFileIO.ImportSolidWorks('model.sldprt', 0, 1, 1, 1.0e-6)

Back to Top

GFileIO.ImportCatiaV4

Prototype
GFileIO.ImportCatiaV4(filename, heal, process_type, use_precision_relative_to_model_size, precision)
Description
Import the specified Catia V4 file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms and the 32-bit Linux platform.
Below is an example of its usage:
entities = GFileIO.ImportCatiaV4('mypart.model', 0, 1, 1, 1.0e-6)

493
CFD-GEOM V2014.0 User Manual

Back to Top

GFileIO.ImportCatiaV5

Prototype
GFileIO.ImportCatiaV5(filename, heal, process_type, use_precision_relative_to_model_size, precision)
Description
Import the specified Catia V5 file into the current model. Note that the "heal" argument (an integer) is
currently unused and is reserved for future usage; you should specify a value of 0 for this argument.
"process_type" can be one of the following:
1. Stitch connected solids, creating clean/shared interfaces between those solids.
2. Unite connected solids into a single solid, tossing out any surfaces that formerly lay between the original
solids.
3. Perform no special assembly processing. Import the solids as-is. This will usually result in arbitrary
interfaces between connected solids.
"use_precision_relative_to_model_size", an integer, controls the interpretation of the specified precision.
If 0 (FALSE), the specified precision is treated as an absolute precision. If 1 (TRUE), the precision is
interpreted as a fraction of the size of the model's bounding box. In both cases, 1e-6 is a typical value for
the precision.
Note that this capability is currently available only to licensed users on 32- and 64-bit MS-Windows
platforms.
Below is an example of its usage:
entities = GFileIO.ImportCatiaV5('model.CATPart', 0, 1, 1, 1.0e-6)

Back to Top

GFileIO.ImportSTL

Prototype
GFileIO.ImportSTL(filename, extract_discrete_surfaces, extract_points_and_lines)
Description
Import the specified stereolithography (STL) file into the current model. Arguments include:
extract_discrete_surfaces: if 1 (TRUE), derive a discrete surface entity from the triangular facets in the file.
extract_points_and_lines: if 1 (TRUE), derive point/line entities from the edges of the triangular facets in
the file. This can often be useful when you need to reverse-engineer a model.
All entities derived from the STL file are returned to Python through an entity dictionary. Below is an
example of its usage:
entities = GFileIO.ImportSTL('model.stl', 1, 0)
Back to Top

GFileIO.ImportNASTRAN

Prototype
GFileIO.ImportNASTRAN(filename, extract_discrete_surfaces, extract_points_and_lines)
Description
Import the specified NASTRAN file into the current model. Arguments include:

494
CFD-GEOM Scripting

extract_discrete_surfaces: if 1 (TRUE), derive discrete surface entities from the grid information in the file.
extract_points_and_lines: if 1 (TRUE), derive point/line entities from the edges of the triangles/quads in
the file. This can often be useful when you need to reverse-engineer a model.
All entities derived from the NASTRAN file are returned to Python through an entity dictionary. Below is
an example of its usage:
entities = GFileIO.ImportNASTRAN('model.nas', 1, 0)
Back to Top

GFileIO.ImportPATRAN

Prototype
GFileIO.ImportPATRAN(filename, extract_discrete_surfaces, extract_points_and_lines)
Description
Import the specified PATRAN neutral file into the current model. Arguments include:
extract_discrete_surfaces: if 1 (TRUE), derive discrete surface entities from the grid information in the file.
extract_points_and_lines: if 1 (TRUE), derive point/line entities from the edges of the triangles/quads in
the file. This can often be Useful when you need to reverse-engineer a model.
All entities derived from the PATRAN file are returned to Python through an entity dictionary. Below is an
example of its usage:
entities = GFileIO.ImportPATRAN('model', 1, 0)
Back to Top

BCVC Scripting Functions

GBCVC Scripting Functions


The following scripting functions may be used to set boundary conditions and material properties on your
geometry, as well as the boundary or material name. To use these functions, you must first import the functions
with an "import GBCVC" call at the top of your Python script.

GBCVC.SetBC(entities, bc_name, bc_type)

GBCVC.AddEntitiesToBCGroup(entities, group_name)

GBCVC.RemoveEntitiesFromBCGroup(entities)

GBCVC.RenameBCGroup(old_group_name, new_group_name)

GBCVC.SetVC(entities, vc_name, vc_type)

GBCVC.AddEntitiesToVCGroup(entities, group_name)

GBCVC.RemoveEntitiesFromVCGroup(entities)

GBCVC.RenameVCGroup(old_group_name, new_group_name)

495
CFD-GEOM V2014.0 User Manual

GBCVC.AutoNameBCs

GBCVC.SetBC

Prototype
GBCVC.SetBC(entities, bc_name, bc_type)
Description
Assign the indicated boundary condition name and type to the specified entities. If you want to
leave one of the components unaltered, you may specify "" for the corresponding value, as long
as you don't also specify "" for the other. Note that valid boundary condition types for each
solver are listed below:
CFD-ACE:
"Default"
"Outlet"
"Inlet"
"Symmetry"
"Wall"
"R_wall"
CFD-FASTRAN:
"Interface"
"Inlet"
"Outlet"
"Inflow_Outflow"
"Wall"
"Symmetry"
"Overset"
"Time Profile"
Note that with the introduction of BC grouping in v2008.2.0.0, it is now possible for this routine
to change the boundary condition type on entities other than the input entities. All entities in a
BC group must have the same BC type. If you change the BC type on an input entity that belongs
to a BC group, all entities in that group will receive the new BC type.
Because the assignment of BC names is independent of BC grouping, the new name (if any) will
still be assigned only to the input entities.
Back to Top

GBCVC.AddEntitiesToBCGroup

Prototype
GBCVC.AddEntitiesToBCGroup(entities, group_name)
Description
Add the input entities to the BC group with the given name. If the group does not already exist, it will be
created. Note the following restrictions:
1. No input entity may already belong to a BC group.
2. All input entities must have the same BC type.

496
CFD-GEOM Scripting

3. If adding to an existing group, the input entities must have the same BC type as the entities already in the
group.
Note also that the input entities should be suitable for BC group assignment. For example, you may not
add a structured 3-D domain (i.e. Block) to a BC group (you would instead add to a VC group). For 3-D
models, you may add surfaces, faces, and discrete surfaces to BC groups. For 2-D models, you may add
lines, curves, edges, and composite edges to BC groups.
Note finally that group_name (a string) may consist only of alphanumeric characters and underscores ('_').
No spaces or other characters are permitted.
Back to Top

GBCVC.RemoveEntitiesFromBCGroup

Prototype
GBCVC.RemoveEntitiesFromBCGroup(entities)
Description
Remove the input entities from any BC group to which they belong. Silently ignore those entities that
don't belong to a group.
Back to Top

GBCVC.RenameBCGroup

Prototype
GBCVC.RenameBCGroup(old_group_name, new_group_name)
Description
Rename the specified BC group (henceforth referred to as group A) referenced by "old_group_name".
Ordinarily, you would use this function to simply assign a new group name. Note that group A must be an
existing BC group.
If, however, new_group_name refers to the name of an existing BC group (henceforth referred to as
group B), the behavior is slightly different. In such cases, the entities in group A will be moved into group
B, and group A will be deleted. However, this is permitted only if the entities in group A have the same BC
type as those in group B.
Note that the old and new group names (strings) may consist only of alphanumeric characters and
underscores ('_'). No spaces or other characters are permitted.
Back to Top

GBCVC.SetVC

Prototype
GBCVC.SetVC(entities, vc_name, vc_type)
Description
Assign the indicated volume condition name and type to the specified entities. If you want to leave one of
the components unaltered, you may specify "" for the corresponding value, as long as you don't also
specify "" for the other. Note that valid volume condition types for each solver are listed below:
CFD-ACE:
"Fluid"
"Solid"

497
CFD-GEOM V2014.0 User Manual

"Block"
CFD-FASTRAN:
"Fluid"
"Blocked"
Note that with the introduction of VC grouping in v2008.2.0.0, it is now possible for this routine to change
the volume condition type on entities other than the input entities. All entities in a VC group must have
the same VC type. If you change the VC type on an input entity that belongs to a VC group, all entities in
that group will receive the new VC type.
Because the assignment of VC names is independent of VC grouping, the new name (if any) will still be
assigned only to the input entities.
Back to Top

GBCVC.AddEntitiesToVCGroup

Prototype
GBCVC.AddEntitiesToVCGroup(entities, group_name)
Description
Add the input entities to the VC group with the given name. If the group does not already exist, it will be
created. Note the following restrictions:
1. No input entity may already belong to a VC group.
2. All input entities must have the same VC type.
3. If adding to an existing group, the input entities must have the same VC type as the entities already in the
group.
Note also that the input entities should be suitable for VC group assignment. For example, you may not
add an edge to a VC group (in a 2-D model you would instead add to a BC group). For 3-D models, you
may add structured domains, semi-structured domains, and unstructured domains to VC groups. For 2-D
models, you may add surfaces, faces, and discrete surfaces to VC groups.
Note finally that group_name (a string) may consist only of alphanumeric characters and underscores ('_').
No spaces or other characters are permitted.
Back to Top

GBCVC.RemoveEntitiesFromVCGroup

Prototype
GBCVC.RemoveEntitiesFromVCGroup(entities)
Description
Remove the input entities from any VC group to which they belong. Silently ignore those entities that
don't belong to a group.
Back to Top

GBCVC.RenameVCGroup

Prototype
GBCVC.RenameVCGroup(old_group_name, new_group_name)
Description

498
CFD-GEOM Scripting

Rename the specified VC group (henceforth referred to as group A) referenced by "old_group_name".


Ordinarily, you would use this function to simply assign a new group name. Note that group A must be an
existing VC group.
If, however, new_group_name refers to the name of an existing VC group (henceforth referred to as
group B), the behavior is slightly different. In such cases, the entities in group A will be moved into group
B, and group A will be deleted. However, this is permitted only if the entities in group A have the same VC
type as those in group B.
Note that the old and new group names (strings) may consist only of alphanumeric characters and
underscores ('_'). No spaces or other characters are permitted.
Back to Top

GBCVC.AutoNameBCs

Prototype
AutoNameBCs ()
Description
Automatically name and group BCs based on the surrounding VC names. If the model is 3-D, any surfaces
and structured face entities will be named based on the names of the unstructured domains, structured
domains, semi-structured domains, and Cartesian domain markers they bound. If the model is 2-D, any
lines, curves, edges, and composite edges will be named based on the names of the surfaces and
structured face entities that use them.
Following is the recommended workflow in which this function should be used:
1) Assign names to all volumes using SetVC(). Recall that, unless specifically named, volumes get the
default name "NoName".
2) Set any BC TYPES (see SetBC()) that require special consideration. For example, you may want to
specify inlets and outlets at this time.
3) Call this function. It will automatically name BCs based on the following rules (using example VC
names):
a) A BC lying between 2 VCs named "VC1" and "VC2" will be named "VC1-VC2". It will be added to a BC
group with the same name.
b) A BC bounding only 1 VC will be named based on the VC name and the BC type. For example, if the VC
name is "VC1" and the BC has been tagged as an inlet, the BC name will be "VC1-Inlet". It will be added to
a BC group with the same name.
c) A BC lying in the interior of a volume (i.e. a baffle/thin wall) with name "VC1" will be named "VC1-
Thin_wall". It will be added to a BC group with the same name.
(4) If you wish to manually specify any BC's, do so now.
Back to Top

499
CFD-GEOM V2014.0 User Manual

Utility Scripting Functions

GUtils Scripting Functions


The following scripting functions may be used to start and stop CFD-GEOM for parametric runs in SimManager,
undo/redo operations, create/remove levels, etc. To use these functions, you must first import the functions with
an "import GUtils" call at the top of your Python script.

GUtils.StartGeom()

GUtils.StopGeom()

GUtils.SetUnits(units)

GUtils.GetUnits()

SetName(entities, new_name)

GetEntitiesWithName(name)

GUtils.DeleteEntities(entities)

GUtils.Undo()

GUtils.Redo()

GUtils.AddUserVariable(dict, name, expression)

GUtils.AddExternallyControlledUserVariable(name, value)

GUtils.CreateLevel(name, red=255, green=255, blue=255, alpha=255)

GUtils.DeleteLevel(name)

GUtils.SetActiveLevel(name)

GUtils.AddEntitiesToLevel(name, entities)

GUtils.RemoveEntitiesFromLevel(name, entities)

GUtils.ChangeLevelName(old_name, new_name)

GUtils.Get<Various>()

GUtils.Get<Various>InLevel(level_name)

GUtils.StartGeom

Prototype
GUtils.StartGeom()
Description

500
CFD-GEOM Scripting

Initialize the CFD-GEOM scripting system when running scripts outside the CFD-GEOM graphical user
interface. This initialization is required, for example, when you wish to run CFD-GEOM scripts from
SimManager or a standalone Python interpreter.

Note that, once this function is called, any subsequent calls to it do nothing until StopGeom() is called.
Note also that this function does nothing if run from within the CFD-GEOM graphical user interface.

Back to Top

GUtils.StopGeom

Prototype
GUtils.StopGeom()
Description
Terminate the CFD-GEOM scripting system when running scripts outside the CFD-GEOM graphical user
interface. This is not strictly required, but is important if you want to free CFD-GEOM resources used
during the script run.

Note that this function does nothing if the scripting system is not in a "started" state ( see StartGeom() ).
It also does nothing if run from within the CFD-GEOM graphical user interface.
Back to Top

GUtils.SetUnits

Prototype
GUtils.SetUnits(units)
Description
Set the units for the current model. Valid units are defined as follows:

0 (METERS)
1 (FEET)
2 (INCHES)
3 (MILLIMETERS)
4 (CENTIMETERS)
5 (MICRONS)
6 (KILOMETERS)
7 (MILES)
8 (MILS)
9 (NANOMETERS)

Back to Top

GUtils.GetUnits

Prototype

501
CFD-GEOM V2014.0 User Manual

GUtils.GetUnits()
Description
Get the units of the current model. Return values are as follows:

0 (METERS)
1 (FEET)
2 (INCHES)
3 (MILLIMETERS)
4 (CENTIMETERS)
5 (MICRONS)
6 (KILOMETERS)
7 (MILES)
8 (MILS)
9 (NANOMETERS)
Back to Top

SetName

Prototype
SetName(entities, new_name)
Description
Assign the specified name to the input entities. new_name must be a non-empty string without leading
and trailing whitespace.

Back to Top

GetEntitiesWithName

Prototype
GetEntitiesWithName(name)
Description
Collect all entities with the given name in the current model. "name" does not refer to a Python handle,
but rather to a name explicitly assigned by the user in the CFD-GEOM graphical user interface, a name
assigned (in a CAD models) by a CAD system, or a name assigned via SetName()

Back to Top

GUtils.DeleteEntities

Prototype
GUtils.DeleteEntities(entities)
Description
Delete the specified entities. Note that only those entities which can be deleted will be deleted.

Back to Top

502
CFD-GEOM Scripting

GUtils.Undo

Prototype
GUtils.Undo()
Description
Undo the most recent command. Note that modifications of edge grid parameters can not currently be
undone via this function. Note also that this function is provided only for the sake of completeness of the
journaling system. In general, if you need to undo an operation, you should delete the last command in
your script, rerun the script, and continue journaling.

Back to Top

GUtils.Redo

Prototype
GUtils.Redo()
Description
Redo the most recently undone operation. See notes for Undo() above.

Back to Top

GUtils.AddUserVariable

Prototype
GUtils.AddUserVariable(dict, name, expression)
Description
Add a user variable. This capability corresponds to the "Edit -> User Variables" tool in the CFD-GEOM
graphical user interface. This function serves 3 purposes:
1) It adds the variable to CFD-GEOM's internal list of user variables, so that it can be used in CFD-GEOM
AFTER the script run.
2) It adds the variable to Python's global namespace so that it can be used DURING the script run.
3) It informs SimManager of the existence of the variable (if the script is specified for parametric studies in
SimManager) so that values can be specified (in SimManager) for the variable BEFORE the script run.

Note This function will usually create/modify the specified variable. However, if the variable has been
"hijacked" by an external app (such as SimManager) via AddExternallyControlledUserVariable(), this
function will simply reset the variable's value to the value specified in the
AddExternallyControlledUserVariable() call.

Back to Top

GUtils.AddExternallyControlledUserVariable

Prototype
GUtils.AddExternallyControlledUserVariable(name, value)
Description

503
CFD-GEOM V2014.0 User Manual

This function allows other programs (i.e. other than CFD-GEOM) running CFD-GEOM scripts to "hijack"
user variables that control the execution of the CFD-GEOM script. Its proper usage and rationale are best
described by an example from SimManager.
Suppose that you've created the following (abbreviated) CFD-GEOM script:
import GUtils
#import other CFD-GEOM modules
GUtils.StartGeom()
GUtils.AddUserVariable(globals(), 'length', 2)
...
# Use 'length' in 1 or more commands
...
GUtils.StopGeom()
Suppose that you now wish to base a parametric study in SimManager upon this script and the variable
"length". When you specify this script in SimManager's "Parametric Study Wizard", SimManager identifies
all calls to GUtils.AddUserVariable and makes the specified variables available for respecification.
Immediately prior to execution of this script in the Python interpreter, SimManager informs CFD-GEOM of
the new user variable. However, without some special protections, the call to GUtils.AddUserVariable (in
the script) would overwrite the value assigned to "length" immediately prior to the script run.
AddExternallyControlledUserVariable helps circumvent this problem. This function is called automatically
by SimManager immediately prior to the script run. This function is very similar to AddUserVariable
except that it sets a special tag on the variable such that any subsequent calls to AddUserVariable will not
modify the variable's value.
Unless you're writing your own SimManager-like system, you should never need to call this function
yourself.

Back to Top

GUtils.CreateLevel

Prototype
GUtils.CreateLevel(name, red=255, green=255, blue=255, alpha=255)
Description
Create a level with the given name and color. red, green, blue, and alpha should be in the range [0..255].
Note the following restrictions on the name:
1) It must be a string at least one character long
2) It may contain only alphanumeric and underscore ('_') characters
3) It must not be in use by another level
4) The name "none" (case-insensitive) is reserved for use by CFD-GEOM and must not be specified.
Back to Top

GUtils.DeleteLevel

Prototype
GUtils.DeleteLevel(name)
Description

504
CFD-GEOM Scripting

Delete the level with the specified name.

Back to Top

GUtils.SetActiveLevel

Prototype
GUtils.SetActiveLevel(name)
Description
Make the specified level the current level. The current level is the level into which newly created entities
are inserted. If name is "" or "none", no level will be current (i.e. newly created entities will not be
inserted into any user-defined level). Otherwise, the specified name must be that of an existing level.

Back to Top

GUtils.AddEntitiesToLevel

Prototype
GUtils.AddEntitiesToLevel(name, entities)
Description
Add the specified entities to the level with the given name. "name" must be the name of an existing user-
defined level created by CreateLevel() or renamed via ChangeLevelName().

Back to Top

GUtils.RemoveEntitiesFromLevel

Prototype
GUtils.RemoveEntitiesFromLevel(name, entities)
Description
Remove the specified entities from the level with the given name. Note that CFD-GEOM ignores those
entities that don't belong to that level. "name" must be the name of an existing user-defined level created
by CreateLevel() or renamed via ChangeLevelName().

Back to Top

GUtils.ChangeLevelName

Prototype
GUtils.ChangeLevelName(old_name, new_name)
Description
Change the name of the level specified by "old_name". "new_name" must meet the following
requirements:
1) It must be a string at least one character long
2) It may contain only alphanumeric and underscore ('_') characters
3) It must not be in use by another level
4) The name "none" (case-insensitive) is reserved for use by CFD-GEOM and must not be specified.

505
CFD-GEOM V2014.0 User Manual

Back to Top

GUtils.Get<Various>

Prototype
GUtils.GetPoints()
GUtils.GetLines()
GUtils.GetCurves()
GUtils.GetEdges()
GUtils.GetCompositeEdges()
GUtils.GetEdgeLinkGroups()
GUtils.GetLoops()
GUtils.GetUntrimmedSurfaces()
GUtils.GetSurfaces()
GUtils.GetDiscreteSurfaces()
GUtils.GetFaces()
GUtils.GetShells()
GUtils.GetUnstructuredDomains()
GUtils.GetSemiStructuredDomains()
GUtils.Get2DStructuredDomains()
GUtils.GetStructuredDomains()
GUtils.GetCompositeStructuredDomains()
GUtils.GetFilaments()
Description
Grab all points, lines, etc. in the current model. These functions may be useful for a variety of purposes.
For example, suppose that you've read a SAT file during a script run, and that you want to mesh all
surfaces read from that file. This function grabs all the surfaces and sticks them in a list, which can then be
fed to the meshing API.
Back to Top

GUtils.Get<Various>InLevel

Prototype
GUtils.GetEntitiesInLevel(level_name)
GUtils.GetPointsInLevel(level_name)
GUtils.GetLinesInLevel(level_name)
GUtils.GetCurvesInLevel(level_name)
GUtils.GetEdgesInLevel(level_name)
GUtils.GetCompositeEdgesInLevel(level_name)
GUtils.GetEdgeLinkGroupsInLevel(level_name)
GUtils.GetLoopsInLevel(level_name)
GUtils.GetUntrimmedSurfacesInLevel(level_name)
GUtils.GetSurfacesInLevel(level_name)
GUtils.GetDiscreteSurfacesInLevel(level_name)
GUtils.GetFacesInLevel(level_name)
GUtils.GetShellsInLevel(level_name)
GUtils.GetUnstructuredDomainsInLevel(level_name)
GUtils.GetSemiStructuredDomainsInLevel(level_name)
GUtils.Get2DStructuredDomainsInLevel(level_name)
GUtils.GetStructuredDomainsInLevel(level_name)

506
CFD-GEOM Scripting

GUtils.GetCompositeStructuredDomainsInLevel(level_name)
GUtils.GetFilamentsInLevel(level_name)
Description
Grab all points, lines, etc. belonging to the specified level in the current model. These can be useful for
grabbing entities belonging to levels imported from a GGD or IGES file.
Back to Top

Visualization Scripting Functions

GViz Scripting Functions


The following scripting functions may be used to blank and unblank entities. This list may be extended to include
other visual operations in the future. To use these functions, you must first import the functions with an "import
GViz" call at the top of your Python script.

GViz.BlankEntities(entities)

GViz.UnblankEntities(entities)

GViz.BlankEntities

Prototype
GViz.BlankEntities(entities)
Description
Blank the specified entities. This capability corresponds to a CTRL-B in the CFD-GEOM GUI.

Back to Top

GViz.UnblankEntities

Prototype
GViz.UnblankEntities(entities)
Description
Unblank (i.e. show) the specified entities. There is currently no corresponding button or hotkey sequence
for this in the CFD-GEOM GUI.

Back to Top

507
CFD-GEOM V2014.0 User Manual

Form Scripting Functions

CFDForm Scripting Functions


CFDForm.CreateForm(window_title)

CFDForm.ExecuteForm(form, placement=4)

CFDForm.AddCloseButton(form, label, disable_if_invalid_input)

CFDForm.AddIntegerInputField(form, parent_name, field_name, py_variable_name, value, low, high,


label_text="", tip_text="", width=5)

CFDForm.AddRealInputField(form, parent_name, field_name, py_variable_name, value, low, high, label_text="",


tip_text="", width=20)

CFDForm.AddMenu(form, parent_name, menu_name, py_variable_name, value, label_text="", tip_text="",


max_visible=5)

CFDForm.AddMenuItem(form, menu_name, item_name)

CFDForm.AddSimpleGroup(form, parent_name, group_name, orientation, group_title="")

CFDForm.AddRadioSwitcher(form, parent_name, group_name, button_style, py_variable_name, value,


orientation=1, group_title="", button_orientation=1)

CFDForm.AddButtonToRadioSwitcher(form, switcher_name, button_name, new_container_name,


new_container_orientation, new_container_title="")

CFDForm.AddImage(form, parent_name, filename)

CFDForm.CreateForm

Prototype
CFDForm.CreateForm(window_title)
Description
Create a new (and empty) Form with the given title.

Back to Top

CFDForm.ExecuteForm

Prototype
CFDForm.ExecuteForm(form, placement=4)
Description
Execute the specified form. This causes the form to become visible and to enter an event loop, waiting for
input. This function returns only when a closure button (see AddCloseButton(...) ) is pressed (see caveat

508
CFD-GEOM Scripting

below). The return value indicates which closure button was pressed. For example, suppose that you add
2 closure buttons "OK" amd "Cancel" (in this order) to the form. Pressing "OK" will cause ExecuteForm() to
return a value of 1. Pressing "Cancel" will cause ExecuteForm() to return a value of 2. You can key on
these return values to control the flow of the remainder of your script.
It is possible to terminate a form by pressing the ESC key. In this case, the return value is 0. Moreover,
none of the changes to any of the widgets in the form is applied (i.e. it will be as if the form was never
executed).
Note that the "placement" argument is reserved for future usage.
Back to Top

CFDForm.AddCloseButton

Prototype
CFDForm.AddCloseButton(form, label, disable_if_invalid_input)
Description
Add a button for closing the specified form. The label will typically be something like "OK" or "Cancel".

Back to Top

CFDForm.AddIntegerInputField

Prototype
CFDForm.AddIntegerInputField(form, parent_name, field_name, py_variable_name, value, low, high,
label_text="", tip_text="", width=5)
Description
Add an integer input field to the given form. Additional arguments include:
parent_name : the name of the container into which the input field should be inserted. If you haven't
added any named containers, you should specify "main" for this argument.
field_name : the name of the field. This is a handle by which you can later access the field, and should be
unique.
py_variable_name : the variable (in your script) to which this field is connected. Note that this variable will
be created upon the completion of form execution if it does not already exist. The name of this variable
should be placed in double quotes.
value : the value of the above variable
low, high : the acceptable range (inclusive) of the value in this field.
label_text (optional) : the text label to display next to the field.
tip_text (optional) : the tooltip to display if you hover over this field with the mouse pointer
width (optional) : the number of digits to display.

Back to Top

CFDForm.AddRealInputField

Prototype
CFDForm.AddRealInputField(form, parent_name, field_name, py_variable_name, value, low, high,
label_text="", tip_text="", width=20)

509
CFD-GEOM V2014.0 User Manual

Description
Add a real (number) input field to the given form. Additional arguments include:
parent_name : the name of the container into which the input field should be inserted. If you haven't
added any named containers, you should specify "main" for this argument.
field_name : the name of the field. This is a handle by which you can later access the field, and should be
unique. py_variable_name : the variable (in your script) to which this field is connected. Note that this
variable will be created upon the completion of form execution if it does not already exist. The name of
this variable should be placed in double quotes.
value : the value of the above variable
low, high : the acceptable range (inclusive) of the value in this field.
label_text (optional) : the text label to display next to the field.
tip_text (optional) : the tooltip to display if you hover over this field with the mouse pointer
width (optional) : the number of digits to display.
Back to Top

CFDForm.AddMenu

Prototype
CFDForm.AddMenu(form, parent_name, menu_name, py_variable_name, value, label_text="",
tip_text="", max_visible=5)
Description
Create a scrollable pulldown menu into which you can insert text items (see AddMenuItem() defined
later). Additional arguments include:
parent_name : the name of the container into which this menu should be inserted. If you haven't added
any named containers, you should specify "main" for this argument.
menu_name : the name of the menu. This is a handle by which you can later access the menu (for
inserting items), and should be unique.
py_variable_name : the variable (in your script) to which this menu is connected. Note that this variable
will be created upon the completion of form execution if it does not already exist. The name of this
variable should be placed in double quotes. When the parent form completes execution, the value of this
variable will be 1 if the 1st item is selected, 2 if the second item is selected, etc. If no items are inserted
into this menu via AddMenuItem(), the resulting value will be 0.
value : the initial value of the above variable. Currently this has no effect and is reserved for future use.
For the time being, you should specify 0.
label_text (optional) : the text label to display next to the menu.
tip_text (optional) : the tooltip to display if you hover over this menu with the mouse pointer
max_visible (optional) : the maximum number of items to display. If the number of inserted items exceeds
this value, a scrollbar becomes visible.

Back to Top

CFDForm.AddMenuItem

Prototype
CFDForm.AddMenuItem(form, menu_name, item_name)
Description

510
CFD-GEOM Scripting

Add a menu item to named menu referred to by menu_name. That menu must have been created via
AddMenu()

Back to Top

CFDForm.AddSimpleGroup

Prototype
CFDForm.AddSimpleGroup(form, parent_name, group_name, orientation, group_title="")
Description
Add a named container which can be used to group related input fields, buttons, etc. Such containers are
useful for enforcing a particular type of layout. Arguments include:
parent_name : the name of the container into which this container should be inserted. If you haven't
added any named containers, you should specify "main" for this argument.
group_name : the name of the new container. This is a handle by which you can later access this
container, and should be unique. You'll need this handle when you want to insert items into it.
orientation : specifies whether items inserted into the group should be arranged vertically (1) or
horizontally (2).
group_title (optional) : If specified, a border will be drawn around the new container and the specified
title will be embedded in that border.

Back to Top

CFDForm.AddRadioSwitcher

Prototype
CFDForm.AddRadioSwitcher(form, parent_name, group_name, button_style, py_variable_name, value,
orientation=1, group_title="", button_orientation=1)
Description
Add a radio switcher to the specified form. A radio switcher is defined by 2 regions. Region1 consists of a
set of buttons upon which "radio" behavior is enforced (that is, exactly one button is selected at any one
time). Region2, which is placed adjacent to Region1, contains "simple groups" (see AddSimpleGroup())
that are placed on top of each other. Which group is currently visible is controlled by the currently
selected button in Region1. Note that this function only creates an empty radio switcher. You must use
AddButtonToRadioSwitcher() to populate this container. Additional arguments include:
parent_name : the name of the container into which this container should be inserted. If you haven't
added any named containers, you should specify "main" for this argument.
group_name : the name of the new container. This is a handle by which you can later access this
container, and should be unique. You'll need this handle when you want to insert items into it.
button_style : specifies whether to create round (1) or square (2) buttons in region1.
py_variable_name : the variable (in your script) to which this switcher is connected. Note that this
variable will be created upon the completion of form execution if it does not already exist. The name of
this variable should be placed in double quotes. When the parent form completes execution, the value of
this variable will be 1 if the 1st item is selected, 2 if the second item is selected, etc. If no items are
inserted into this switcher via AddButtonToRadioSwitcher(), the resulting value will be 0.
value : the initial value of the above variable. Currently this has no effect and is reserved for future use.
For the time being, you should specify 0.

511
CFD-GEOM V2014.0 User Manual

orientation (optional) : specifies whether region2 should be positioned to the left (1), below (2), to the
right (3), or above (4) region1.
button_orientation (optional) : specifies whether the buttons in region1 should be arranged vertically (1)
or horizontally (2)

Back to Top

CFDForm.AddButtonToRadioSwitcher

Prototype
CFDForm.AddButtonToRadioSwitcher(form, switcher_name, button_name, new_container_name,
new_container_orientation, new_container_title="")
Description
See notes in AddRadioSwitcher(). Add a new button and container pair to the specified radio switcher.
The new container will always be a "simple group". Additional arguments include:
switcher_name : the name of the switcher into which this pair should be inserted. This name must refer
to a radio switcher.
button_name : the name and text label of the new button.
new_container_name : the name of the new container inserted into region2. This is a handle by which
you can later access this container, and should be unique. You'll need this handle when you want to insert
items into it.
new_container_orientation : specifies whether items inserted into the new container should be arranged
vertically (1) or horizontally (2).
group_title (optional) : If specified, a border will be drawn around the new container and the specified
title will be embedded in that border.
Back to Top

CFDForm.AddImage

Prototype
CFDForm.AddImage(form, parent_name, filename)
Description
Insert an image into the specified container. Arguments include:
parent_name : the name of the container into which this image should be inserted. If you haven't added
any named containers, you should specify "main" for this argument.

Back to Top

512
Chapter 12. Frequently Asked Questions
What do the different update options for DTF files mean when saving a DTF file
from CFD-GEOM?
• Overwrite: If you choose this option, GEOM will overwrite the existing DTF file and you will loose all
settings that were previously in the DTF file. This is essentially a fresh DTF file.

• Update Grids Only: This option will update the grids in your DTF file and will retain all the settings that
were used in the DTF file.

• Cancel: This option simply quits the Save As DTF option

• Limitations:

• These options will not work if any entities are deleted and recreated. The reason is that the key
numbers for the entities will be different, which is not allowed when attempting to update a DTF
file.

• These options will not work if any additional entities are added to the DTF file, i.e. you add a new
part to the geometry.

• Files which contain polyhedral zones, i.e. filaments, cannot be updated.

How can I transfer a model from CFD-GEOM to CFD-VisCART?


To go from CFD-GEOM to CFD-VisCART, you can dump any one of the following files and import the file into CFD-
VisCART: DTF (Geometry option), SAT, Plot3D, FAST-U, or STL. Currently, CFD-VisCART cannot import GGD files.

513
Appendix A IBC File Format
The .IBC file is created when the Save Structured Grid/Save GEOM option is invoked. The .IBC file, in conjunction
with the Plot3D grid file, transmits interface, boundary condition, and cell type information for structured grid
datasets, as well as the relationship between the Plot3D information and CFD-GEOM database, to a flow solver.
The CFD-ACE Graphical User Interface relies on this information extensively.

Note The file is divided into the following three separate sections: Interface information, Boundary condition
information, and Cell type information

Comments can be placed anywhere in the file. A comment line has an "!” as the first character of its line.
Additionally, the first line of the file has a comment line that indicates the .IBC file version number. The domain
interface information is automatically provided by CFD-GEOM. For 3D, a domain interface exists if a face is shared
by two different blocks, while for 2D an interface exists if an edge is shared by two 2D blocks. The boundary
condition and cell type (volume condition) information is set by the user in either the Boundary Conditions or
Volume Conditions window. Boundary conditions may be set on edges (2D) or faces (3D) while volume conditions
may be set on faces (2D) or blocks (3D). All entities, even those for which no boundary or volume condition was
specified, are output to the .IBC file.

515
Appendix B Data
• Block Interface Data
• Boundary Condition Data
• Cell Type Data

Block Interface Data


Record Contents

1 Num_interfaces

2-N+1 Key id if il jf jl kf kl idm

where:

Num_interfaces = total number of block interfaces

Key = unique integer number specifying the CFD-GEOM entity to which this interface refers

id = is the domain number of the interface

if, il = are the first and last i-indices of the interface

jf, jl = are the first and last j-indices of the interface

kf, kl = are the first and last k-indices of the interface

idm = the domain number that contains the matching interface

Note: Interfaces are sorted by domain number.

Boundary Condition Data


Record Contents

1 Num_bc

2-N+1 Key id if il jf jl kf kl string1 string2 string3

where:

Num_bc = the total number of boundary conditions

517
CFD-GEOM V2014.0 User Manual

unique integer number specifying the CFD-GEOM entity


Key = to which this boundary condition applies

id = domain number of boundary condition

if, il = the first and last i-indices of the bc

jf, jl = the first and last j-indices of the bc

kf, kl = the first and last k-indices of the bc

string1 = boundary condition type

string2 = boundary condition sub-type

string3 = character identifier for the boundary condition

Note: Boundary conditions should be sorted by domain.

Cell Type Data


Record Contents

1 Num_cell_type_records

2-N+1 Key id if il jf jl kf kl string1 string2 string3

where all parameters are as defined in the Boundary Condition Data except that the strings refer to the cell types.

518
Appendix C Formats
Grid File Formats
PLOT3D Data Format
Unstructured FAST Data Format
NASTRAN Mixed Element Format
PATRAN Mixed Element Format

Grid File Formats


CFD-GEOM can read and write a variety of structured and unstructured grid file formats including DTF, PLOT3D,
Mixed-U, FAST, NASTRAN, PATRAN, and STL. This appendix describes the file naming conventions used by CFD-
GEOM for these formats, the file formats themselves, and any other details needed for working with these formats
within CFD-GEOM.

File Extension Conventions


All ESI CFD software follows certain standard file extension conventions. Adhering to these standards makes it
easier for you to load and save data from the various ESI CFD software packages. All filename extensions should be
capitalized. CFD-GEOM supports the filename extensions shown in the table below.

Filename Usage

name.PUG PLOT3D format, Unformatted, Grid

name.PFG PLOT3D format, Formatted, (ASCII) Grid

name.PBG PLOT3D format, Binary, Grid

name.UXX Unstructured FAST format

name.DTF ESI CFD data transfer facility

File Formats
CFD-GEOM Supports the PLOT3D and FAST data formats as well as others. The PLOT3D can be formatted,
unformatted, or binary, contain an single or multi domain 3D grid and may have blanking information. However,
CFD-GEOM can only read formatted FAST files and they can contain multi-domain 3D grids. For both PLOT3D and
FAST the files may be in single or double precision. When reading formatted PLOT3D and FAST files, CFD-GEOM
will use whatever precision is specified in the file. When reading unformatted and binary PLOT3D files, CFD-GEOM
will read single-precision by default and give you the option of specifying double precision.

519
CFD-GEOM V2014.0 User Manual

PLOT3D Data Format


PLOT3D is a widely used structured grid format supported by many grid generators and flow solvers. CFD-GEOM
can write and read PLOT3D files. CFD-GEOM can write 1D, 2D, or 3D structured grids to PLOT3D. Writing grids of
mixed dimensionality to a single PLOT3D file is not supported in CFD-GEOM. The following types of CFD-GEOM
entities can be written:

1D Structured Edges

2D 2D Blocks (Note that Faces must be composited into 2D Blocks before they can be written to PLOT3D)

3D Blocks and Composite Blocks

In the File Save Dialog, the dimension can be specified. The availability of these options will depend upon the types
of entities that exist in the model (i.e. the 3D option will be disabled if the current model contains no Blocks or
Composite Blocks). A fourth option, Selective is also available. Before opening the File Save Dialog, you may select
a set of structured grid entities. Upon entering the File Save Dialog and selecting Selective, only those picked
entities will be written to the file.

Note These entities must all be of the same dimensionality.

The following types of PLOT3D files can be written by CFD-GEOM:

• Formatted (ASCII)
• Unformatted (binary)
• Binary (binary)

Grid Point coordinates can be written in single (the default) or double precision. CFD-GEOM always writes blanking
information (except when writing 1D grids) and always writes multi-zone files (even if only one zone is being
written). You may also elect to write a companion IBC file. (See Appendix A for a description of the IBC file format).
For unformatted and binary output types, integer and floating point data are written in the native byte order (see
the section below on reading PLOT3D files) A detailed description of the PLOT3D format can be found at the end of
this section and at the following web site:

www.nas.nasa.gov/Software/FAST/RND-93-010.walatka-clucas/htmldo

CFD-GEOM can also read PLOT3D structured grid files, and unstructured grid files (commonly called FAST-format
files, which are described later in this Appendix). There are several other variants of PLOT3D (solution, scalar, and
vector file formats). These are not supported by CFD-GEOM. Given a PLOT3D file, CFD-GEOM automatically
determines the following file characteristics:

file type formatted, unformatted, or binary

zonality single or multi-zone

520
Appendix C

precision single or double

iblank whether or not iblank data is present

(unformatted and binary only) Whether or not byte swapping needs to be


byte applied. This is necessary when reading files on a machine whose native byte
ordering is different from that of the machine on which the file was created.

CFD-GEOM can read file of mixed dimensionality. CFD-GEOM reverse engineers the geometry/topology/grid data
from the file. Given the dimensionality of a particular zone, CFD-GEOM performs the following actions:

• 1D - Geometry points are created from the grid points in the zone. A curve is then splined through those
points. An edge is then created on the curve. The grid points in the zone are then assigned to the edge.
Note: Most often, CFD-GEOM can not determine what mathematical rule was used to generate the grid.
Thus, it assigns the type extracted (as opposed to power law, hyperbolic tangent, or geometric currently
supported by CFD-GEOM) to the Edge. The extracted distribution will be preserved unless you later
change the number of grid points on the edge or modify the underlying geometry. In these cases, the
edge distribution reverts to a power law 1.0 distribution.
• 2D - Points, a curve, and an edge (created in a manner similar to the 1D case) are created on each of the
four sides of the 2D grid in the zone. Degenerate Edges are created when the number of sides is less than
four. A face is then created from these edges. The face’s grid is then extracted from the grid points in the
file. Note: CFD-GEOM will be unaware of any projection, smoothing, etc. used to generate the grid in the
file. Hence, it assigns the type extracted to the Face. The face grid will be preserved so long as the
underlying edges or geometry are not subsequently modified. If you intend to modify the grid, it may be
necessary to create a NURBS surface from the face and then to project the face to the surface. This will
help preserve the face’s shape during the grid modifications.
• 3D - Faces (created in a manner similar to the 2D case) are created on each of six sides of the 3D grid in
the zone. Degenerate Faces are created where necessary. A block is then created from these faces. In
most cases, CFD-GEOM will be unable to preserve the locations of the interior nodes in the grid, and will
thus revert to a TFI of the interior nodes. If your intention is simply to translate a 3D PLOT3D grid to DTF,
CFD-Toolkit is recommended. However, once the block is created in CFD-GEOM via reading a PLOT3D file,
you can change grid distributions in the usual ways.
Notes

• When blocks are composited (in CFD-GEOM or another package) and the composited block is written to
PLOT3D, all geometry and topology data interior to the composite block is lost. A composited block in the
PLOT3D file will appear as a single block to CFD-GEOM. Therefore, CFD-GEOM has no way of reverse
engineering any interior interfaces that may have once existed.

• If the original geometry contained a Block with two or more Blocks adjacent to it on a single side, and
these Blocks were written to separate zones in a PLOT3D file, CFD-GEOM will create overlapping or
coincident faces at the interface between these Blocks. Even though the grid points on the overlapping
Faces will match, these will be treated as arbitrary interfaces, and may require further action from the
user to correct. This issue may be corrected in a future release of CFD-GEOM.

521
CFD-GEOM V2014.0 User Manual

Single-Domain Grid File


Ni Nj Nk
X(1,1,1) ... X(Ni,Nj,Nk),
Y(1,1,1) ... Y(Ni,Nj,Nk),
Z(1,1,1) ... Z(Ni,Nj,Nk)
where:
Ni = the number of grid points in i-direction

Nj = the number of grid points in j-direction

Nk = the number of grid points in k-direction

3-D arrays of the X, Y, and Z Cartesian grid


X, Y, Z =
point coordinates

Single-Domain Grid File with Blanking


Ni Nj Nk
X(1,1,1) ... X(Ni,Nj,Nk),
Y(1,1,1) ... Y(Ni,Nj,Nk),
Z(1,1,1) ... Z(Ni,Nj,Nk),
IB(1,1,1) ... IB(Ni,Nj,Nk)

where

IB = the three dimensional array of i-blanking values

all other variables = the same as for the grid file without blanking

Multi-Domain Grid File


Nz
Ni(1) Nj(1) Nk(1) ... Ni(Nz) Nj(Nz) Nk(Nz)
X1(1,1,1) ... X1(Ni(1),Nj(1),Nk(1)),
Y1(1,1,1) ... Y1(Ni(1),Nj(1),Nk(1)),
Z1(1,1,1) ... Z1(Ni(1),Nj(1),Nk(1))
.
.
XNz(1,1,1) ... XNz(Ni(Nz),Nj(Nz),Nk(Nz)),
YNz(1,1,1) ... YNz(Ni(Nz),Nj(Nz),Nk(Nz)),
ZNz(1,1,1) ... ZNz(Ni(Nz),Nj(Nz),Nk(Nz))

where

Nz = number of domains

Ni(n) = number of grid points in the i-direction for domain n

522
Appendix C

Nj(n) = number of grid points in the j-direction for domain n

Nk(n) = number of grid points in the k-direction for domain n

Xn, Yn, Zn = 3D arrays of the X, Y, and Z Cartesian grids points for domain n

Multi-Domain Grid File with Blanking


Nz
Ni(1) Nj(1) Nk(1) ... Ni(Nz) Nj(Nz) Nk(Nz)
X1(1,1,1) ... X1(Ni(1),Nj(1),Nk(1)),
Y1(1,1,1) ... Y1(Ni(1),Nj(1),Nk(1)),
Z1(1,1,1) ... Z1(Ni(1),Nj(1),Nk(1)),
IB1(1,1,1)...IB1(Ni(1),Nj(1),Nk(1))
.
.
XNz(1,1,1) ... XNz(Ni(Nz),Nj(Nz),Nk(Nz)),
YNz(1,1,1) ... YNz(Ni(Nz),Nj(Nz),Nk(Nz)),
ZNz(1,1,1) ... ZNz(Ni(Nz),Nj(Nz),Nk(Nz)),
IBNz(1,1,1)...IBNz(Ni(Nz),Nj(Nz),Nk(Nz))

IBn = three dimensional array of i-blanking values for domain n

all other variables = same as for the grid file without blanking

Unstructured FAST Data Format


CFD-GEOM supports only formatted FAST data formats. CFD-GEOM can read single and multi-zone files, but will
always write multi-zone files, even when there is only one zone. When reading formatted FAST files CFD-GEOM will
use whatever precision is specified. The unstructured grid supported in CFD-GEOM can incorporate tetrahedral
elements, as well as triangular surface elements. Files cannot be of mixed dimensionality. Zones containing
tetrahedra are converted to unstructured Domains. Zones containing only triangles are converted to External
Surface Patches.

Single-Domain Unstructured Grid File


Np Nf Nt
X(1) ... X(Np)
Y(1) ... Y(Np)
Z(1) ... Z(Np)
F1(1) F2(1) F3(1)
.
.
F1(Nf) F2(Nf) F3(Nf)
FN(1)
.
.
FN(Nf)
T1(1) T2(1) T3(1) T4(1)
.

523
CFD-GEOM V2014.0 User Manual

.
T1(Nt) T2(Nt) T3(Nt) T4(Nt)
where:
Np = number of points

Nf = number of faces (triangles)

Nt = number of tetrahedra

X(n), Y(n), Z(n) = X, Y, and Z cartesian coordinates of point n

F1(n), F2(n), F3(n) = three points comprising triangle n

FN(n) = surface number of face n

T1(n), T2(n), T3(n), T4(n) = four triangles comprising tetrahedra n

Multi-Domain Unstructured Grid File


Nz
Np(1) Nf(1) Nt(1)
.
.
Np(Nz) Nf(Nz) Nt(Nz)
X1(1) ... X1(Np(1))
Y1(1) ... Y1(Np(1))
Z1(1) ... Z1(Np(1))
F11(1) F21(1) F31(1)
.
.
F11(Nf(1)) F21(Nf(1)) F31(Nf(1))
FN1(1)
.
.
FN1(Nf(1))
T11(1) T21(1) T31(1) T41(1)
.
.
T11(Nt(1)) T21(Nt(1)) T31(Nt(1)) T41(Nt(1))
.
.
.
XNz(1) ... XNz(Np(Nz))
YNz(1) ... YNz(Np(Nz))
ZNz(1) ... ZNz(Np(Nz))
F1Nz(1) F2Nz(1) F3Nz(1)
.
.
F1Nz(Nf(Nz)) F2Nz(Nf(Nz)) F3Nz(Nf(Nz))
FNNz(1)
.
.
FNNz(Nf(Nz))
T1Nz(1) T2Nz(1) T3Nz(1) T4Nz(1)
.
.
T1Nz(Nt(Nz)) T2Nz(Nt(Nz)) T3Nz(Nt(Nz)) T4Nz(Nt(Nz))

524
Appendix C

where
Nz = number of domains

Np(N) = number of points for domain N

Nf(N) = number of faces (triangles) for domain N

Nt(N) = number of tetrahedra for domain N

X, Y, and Z Cartesian coordinates of point n for domain


XN(n),YN(n),ZN(n) =
N

F1N(n),F2N(n),F3N(n) = three points comprising triangle n for domain N

FNN(n) = surface number of face n for domain N

T1N(n), T2N(n), T3N(n), T4N(n) = four triangles comprising tetrahedra n for domain N

Example Unstructured Grid File


The following file is an example of an extremely simple unstructured grid, a cube of eight points, whose internal
space is subdivided into five tetrahedra. The six surfaces are each subdivided into two triangles.

<--- Number of blocks if greater than 1

8 12 5 <--- Eight points, twelve triangles, five tetrahedra

0.0 1.0 0.0 1.0 0.0 1.0 0.0 1.0 <--- X values of point 1,2,...,8

0.0 0.0 1.0 1.0 0.0 0.0 1.0 1.0 <--- Y values of point 1,2,...,8

0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 <--- Z values of point 1,2,...,8

125 <--- Face 1, consisting of points 1, 2, and 5

265 <--- Face 2, consisting of points 2, 6, and 5

248

286

348

387

135

375

123

243

525
CFD-GEOM V2014.0 User Manual

568

587 <--- Face 12, consisting of points 5, 8, and 7

1 <--- Surface number of Face 1

1 <--- Surface number of Face 2

6 <--- Surface number of Face 12

1235 <--- Tetrahedron 1, consisting of points 1, 2, 3 & 5

5286

2438

5837

5238 <--- Tetrahedron 5, consisting of points 5, 2, 3 & 8

NASTRAN Mixed Element Format


CFD-GEOM saves NASTRAN data with the following directives depending on the cell type:
• CTRIA3
• CQUAD4
• CTETRA
• CHEXA
• CPENTA

PATRAN Mixed Element Format


CFD-GEOM saves PATRAN data with the following tags:
• Cell data (2) - tri, quad, tet, wedge/prism, and hex
• Boundary condition (6)

526
Appendix D CFD-GEOM Tabulated Data
The format for CFD-GEOM Tabulated Data is given below. TAB is the default extension given to tabulated data.
Line 1 Number of curves in the file
Line 2 Number of points defining the curve
Line 3-N X Y Z

Example
3 ♦ Number of Curves to be created
5 ♦ First curve defined by first five points
4 ♦ Second curve defined by next four points
2 ♦ Third curve defined by next two points
0.000 0.0 0.0 ♦ X Y Z data for first point in curve 1
1.25 1.000 0.0 .
2.3367 3.000 0.0 .
3.84 7.00 0.00 .
5.5 6.3 0 ♦ X Y Z data for last point in curve 1
0.0 0.0 0.0 ♦ X Y Z data for first point in curve 2
0.0 1.0 0.0 .
0.0 2.0 0.0 .
0.0 3.0 0.0 ♦ X Y Z data for last point in curve 2
1.25 6.8 3.39 ♦ X Y Z data for first point in curve 3
16.115 -12.54 -9.6 ♦ X Y Z data for last point in curve 3

527
Appendix E Sample Python Scripts
This appendix includes scripts for the following:

3D NACA Airfoil Definition with Multiple Cross Sections

Invoke 3D airfoil with 3 cross sections

Multiple NACA 2D Airfoils - Create Unstructured Grid Around Multiple Airfoils

3D NACA Airfoil Definition with Multiple Cross Sections


#
def NACAAirfoil3D (par =
[[0,0,12],[0,0,12],[0,0,12]],twist=[0,0,0],length=[0,2,4],taperratio=[1,1,1],sweepangl
e=7):

if len (par) < 2:


raise "There should be more than 1 airfoil"

if (len (par) != len (twist)) or (len (par) != len (length)) or (len (par) != len
(taperratio)):
raise "Not all the required data was provided for all airfoils"
numAirfoils = len (par)
airfoilCurves = []
for x in range (0, numAirfoils):
xpos = (0.5 - 0.5/taperratio[x]) + length[x] * math.tan (GGlobal.DTOR (sweepangle))
offset = [xpos, 0.0, length[x]]
airfoilCurves.append (AirfoilGeometry (par[x][0], par[x][1], par[x][2], twist[x],
offset, 1./taperratio[x]))
airfoilLoop = GLoop.Create (airfoilCurves[0])
min_point = [-1.0*leadingDistance,-1.0*lowerDistance,length[0]]
max_point = [1.0+trailingDistance, upperDistance, length[numAirfoils-1]*2]
srfs = GSurface.CreateBoundingBox ( min_point, max_point)
GSurface.AddLoop (srfs[0], airfoilLoop)
ruledTopCurves = []
ruledBottomCurves = []
for x in range (0, numAirfoils):
ruledTopCurves.append ([airfoilCurves[x][0]])
ruledBottomCurves.append ([airfoilCurves[x][1]])
usurf = GSurface.CreateRuled (ruledTopCurves)
lsurf = GSurface.CreateRuled (ruledBottomCurves)
bsurf = GSurface.CreateRuled (airfoilCurves[numAirfoils-1][0],
airfoilCurves[numAirfoils-1][1])
GSurface.TrimAll ()
dShell = GUnstruct.CreateClosedSurfaceSet (srfs, bsurf, usurf, lsurf)
domain = GUnstruct.CreateDomain (dShell)
GUnstruct.GenerateTriangularMesh (domain)
GUnstruct.GenerateTetMesh (domain)

Invoke 3D airfoil with 3 cross sections


#First section is NACA 4 4 12, twist angle is -2 degrees, z position is 0, taperratio
= 1
#Second section is NACA 1 4 12, twist angle is 0 degrees, z position is 1, taperratio
= 2
#Third section is NACA 4 4 8, twist angle is 3 degrees, z position is 3, taperratio =
6

529
CFD-GEOM V2014.0 User Manual

#Sweep angle for entire wing is 13 degrees

NACAAirfoil3D([[4,4,12], [1,4,12], [1,4,8]], [-2,0,3], [0,1,3], [1,2,6], 13)

Multiple NACA 2D Airfoils - Create Unstructured Grid


Around Multiple Airfoils
#Create Computational Domain
min_point = [-1.0*leadingDistance,-1.0*lowerDistance,0.0]
max_point = [1.0+trailingDistance, upperDistance, 0.0]
srf = GSurface.CreateBoundingPlane ( min_point, max_point)
GSurface.TrimAll ()
#Create Main Airfoil Shape NACA 0012
airfoilCurves1 = AirfoilGeometry (0, 0, 12, 0., [0.0, 0.0, 0.0], 1.0)
airfoilLoop1 = GLoop.Create (airfoilCurves1)
GSurface.AddLoop (srf, airfoilLoop1)

#Create Airfoil Shape NACA 0012 for flap


airfoilCurves2 = AirfoilGeometry (0, 0, 12, 0., [1.0, -0.05, 0.0], 0.2)
airfoilLoop2 = GLoop.Create (airfoilCurves2)
GSurface.AddLoop (srf, airfoilLoop2)

dShell = GUnstruct.CreateOpenSurfaceSet (srf)


domain = GUnstruct.CreateDomain (dShell)
# Adding Source to domain to control trailing edge grid density
src_point = GCurve.GetEndPoint (airfoilCurves1[0])
GUnstruct.AddCornerPointSource (domain, src_point, 0.0001)
GUnstruct.GenerateTriangularMesh (domain)

530
531

You might also like