OUTDATED VERSION. Follow the link for the latest version: https://www.hexagonmi.com/MSC-Apex-Generative-Design/help

Configuration File

The configuration file contains all information necessary for the algorithm to run through the optimisation. It is subdivided into seven different areas: Geometry, Loads and Constraints, Cases (Events), Optimisation, FEMConfig, ImportConfig and Advanced User Settings.

Based on the geometry data and the .config file, the algorithm can run fully autonomous and generate the result files in one subfolder each time it is started in the main folder.

The configuration file starts with the creation timestamp and also indicates the used unit system.

MSC Apex Generative Design

written on Tue Jun 16 11:46:20 2020

unitSystem

SI_mm_t

Geometry

In the Geometry section, the different roles of the geometries for the optimisation are defined. For each geometry used in the optimisation (STL-file), either a space or a cell must be existing. A space can get additional information regarding the material whereas cells are only used as markers to define certain areas of the space.

All values are based on the chosen unit system.

Space

Space Spacename

Each object is given a unique name Spacename.

.path = Design.stl

The path is the name of the file.

.material = Steel

User-defined material name. This will not be used any further in the optimisation process.

.E-Modul = 210000.000000

Young's Modulus according to the unit scheme used (here MPa).

.Poisson = 0.33

Poisson ratio.

.density = 7.9e-9

Density of the material.

Cells

Mask Maskname

Each object is given a unique name Maskname.

.path = Non_Design_Region_1.stl

The path is the name of the file.

Mask.Non_Design_Region_3.nonDesign

Defines the mask as a Non-Design Region

Mask.Non_Design_Region_3.useCentreOfTheSurface

Mask.Non_Design_Region_3.useOnlySurface

The mask represents a surface.

Mask.Non_Design_Region_3.preserve

The mask cannot be removed during the optimisation and will keep a connection to the

Local Coordinate Systems

CoordinateSystem Coordinate_System_1

Each coordinate system is given a unique name Coordinate_System_1

.euler1z =0.000000

.euler2x = 2.417309

.euler3z = 4.712389

.x = -0.071360

.y = -0.022816

.z = 0.02185

The coordinate system is located/orientated with coordinate values and Euler angles regarding the global coordinate system.

More information regarding the difference between a space and mask here.

Machining Allowance

The Machining Allowances section collects all information regarding the Machining Allowances and the Design Space including the Machining Allowances to guarantee a correct intersection.

MachiningOffset machOffset_MachiningAllowance_Machining_Allowance_1

Each Machining Allowance is given a unique name.

.mask = Maskname

Defines to which mask the offset refers.

.offset = 0.001000

Defines the thickness of the Machining Allowance in the chosen unit.

Mask DesignSpace_machiningOffset

offsetSpace = DesignSpace_machiningOffset

Defines the geometry of the intersection model including Machining Allowances.

automaticFunctionalFacesDetection.positiveNonDesignDirection=true

 

false

Functional Surfaces are automatically detected. These areas grow during an optimisation to guarantee sharp edges and functional surfaces after the intersection.

If all functional surfaces have a Machining Allowance applied to them, this option should be deactivated.

Symmetry

symmetry.x

symmetry.y

symmetry.z

x-axis as symmetry plane (Y-Z-Plane).

y-axis as symmetry plane (X-Z-Plane).

z-axis as symmetry plane (X-Y-Plane).

symmetry.coordinateSystemBase = CoordSystem_Coordinate_System_1

If the symmetry is to refer to a local coordinate system, the following command must also be entered (Coordinate_system_1 is the name of the local coordinate system and can vary).

Loads and Constraints

The Loads and Constraints section collects all information regarding the loads and fixations applied to the different masks.

Load Force_-_Moment_1

A force is marked with the word "Load" and additionally gets a name. 

Moment Force_-_Moment_2

A moment is marked with the word "Moment" and additionally gets a name.

Acceleration Apply_gravity_1

 

.space =

An acceleration is marked with the word "Acceleration" and additionally gets a name.

The acceleration is always applied to the whole Design Space.

Pressure Pressure_1

A pressure load is marked with the word "Pressure" and additionally gets a name.

Displacement Constraint_1

A fixation is marked with the word "Displacement" and additionally gets a name (dis1).

For fixations, the degree of freedom (x, y, z) is subsequently defined by a prescribed displacement of 0.

.mask = Maskname

The mask affected by the boundary condition (Maskname) is selected

.x =

Boundary condition in x-direction

.y =

Boundary condition in y-direction.

.z =

Boundary condition in z-direction.

Cases

The previously defined loads and fixations are combined into Events (load cases).

Case Event_1.Force_-_Moment1

Case Event_1.Constraint_1

The Event is marked with the word "Case" and additionally gets a name.

The conditions are listed directly after the name distinguished by “.”

optimisation

In this section the optimisation parameters are entered.

optimizeSpace =

Definition of the Design Space.

startSpace =

If you have added a Start Space via the Advanced User Settings you can find it here.

strutDensity =

dense

medium

sparse

Determine the style of the result structure.

More information here

shapeQuality =

preview

balanced

fineTune

Selection of the number of iterations being calculated.

 

More information here

Optimizer Global target stress =

Global optimisation Stress Goal

Optimizer Case Event_1 target stress =

Event specific Stress Goal for specific Event (Event_1)

FEMConfig

solver=

Extern

CG

Connection to the solver.

External CudaSolver.

CG Uses an integrated conjugated gradient solver.

solverIP=localhost

IP of the external solver, localhost for the same workstation. IP for cloud, for what the matrix is built locally and sent to the calculation unit. Large amounts of data can be moved with a corresponding amount of time.

solverPort=42001

Port which is used to access the CudaSolver. This can be selected arbitrarily, according to the specified value when starting the solver. (The default port for the Cuda service is 42001)

eigenThreads=4

Number of CPU threads that can be used to build the matrix. At least two cores should always remain free. We recommend using 2-6 threads.

complexity=14.000000

Defines how complex the design is getting. More information here.

solverUsedGpuMax=n

Maximum number of GPUs used by the optimisation (support GPUs: Nvidia Quadro Graphics Cards supported by CUDA Driver)

ImportConfig

detail=auto

Detail refers to the edge length of the FEM elements and can either be calculated automatically depending on the "Complexity" or set manually. In the case of a defective ST-file, the detail should be set manually, since the calculation of the volume has an error and the automatic estimation cannot take place. A reduction of the detail by half results in an 8-times change of the calculation time.

ExportConfig

The following output files can be selected.

Default export settings

export_ply_name_binary_Dis

 

export_ply_name_binary_Stress

 

export_allCasesInSingleFile

Generates file containing stress and displacement, if activated (combined file for all Events)

export_stl_name_MC_Smooth

Result geometry

export_ply_name_offsetSpaceIntersection

Result geometry including Machining Allowances

Additional export options: Stresses

export_ply_name_Stress_RGB

Stresses: ply in colour

export_ply_name_Stress

Stresses: ply values for nodes

export_ply_name_binary_Stress

Stresses: ply values for nodes in binary format

export_ply_name_Stress_Prop

Stresses: ply values for facets

export_CSV_Element_StressAndDis

Save csv File stress and Displacement (each for loadcase)

Additional export options: Displacements

export_ply_name_Dis_RGB

Displacements: ply in colour

export_ply_name_Dis

Displacements: ply values for nodes

export_ply_name_binary_Dis

Displacements: ply values for nodes in binary format

export_ply_name_Dis_Prop

Displacements: ply values for facets

Additional export options: Result Geometry

csv_Boundary_Reaction

csv_Boundary_Reaction_all

suit of csv files for knots loads and reaction visualization 

noIntersection

smoothed not intersected geometry is written out

Advanced User Settings

Have a look at the Advanced User Settings

Using the expert settings, you can change the resolution and switch between the individual resolution levels to influence the result. These settings overwrite the selection of the DesignType (dense, medium, sparse), as they are only default settings for the ones described here. These should not be accessible via standard GUI, but maybe with an additional text editor inside the GUI.

When choosing a startSpace, these settings should be made to reduce the computational effort even more. The "coarser" resolution levels can thus be skipped and it can be started directly with a finer level (Level 1 or even Level 0). It is important that both level definitions are consistent.

Influencing the design

 

UpSampleConfig

fOptimizer_switchAddRemove=58


Starting with iteration 58, elements are either added or removed and only every second iteration is saved. This is important for the iterations near to the end of the optimisation.

iteration

.level_3=20"

.level_2=20"

.level_1=20"

.level_0=10"

Specify how many iterations are calculated at which resolution level. Note that convergence should be achieved at each level.

Default settings normal: 20, 20, 20, 10

Default settings massive: 16, 40, 4, 4

Default settings filigree: 10, 10, 40, 10

fOptimizer_stressPercentGoal

.level_3=30

.level_2=40

.level_1=90

.level_0=100

The percentage at which the target stress is reached is set.

Default settings normal: 30, 40, 90, 100

Default settings massive: 60, 90, 95, 100

Default settings filigree: 10, 25, 50, 100

 

Copyright (C) 2021, MSC Software Corporation and its licensors. All rights reserved.