Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Complete Update regarding the new Input Config

The configuration file Configuration File contains all information necessary for the algorithm to run through the optimisation. It is subdivided into seven different areas : regarding the Geometry, Loads and Constraints, Cases (Events) , Optimisation, FEMConfig, ImportConfig and Advanced User Settingsand optimisation parameter. The file is written in JSON file format.

Based on the geometry data and the .config fileConfiguration 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

applicationRequest

OptimizationLoop

Indicates that the regular optimisation loop is executed

automaticFunctionalFacesDetection.positiveNonDesignDirection

true

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.

Loads and Constraints

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

boundaryCondition.<name>.geometryName

Name of a geometry entry to associate with.

boundaryCondition.<name>.coordinateSystem

Name of a coordinate system described in the same file, used for describing constraints in local coordinates.

boundaryCondition.<name>.load.x

boundaryCondition.<name>.load.y

boundaryCondition.<name>.load.z

x-direction of load

y-direction of load

z-direction of load

boundaryCondition.<name>.displacement.x

boundaryCondition.<name>.displacement.y

boundaryCondition.<name>.displacement.z

x-direction of displacement

y-direction of displacement

z-direction of displacement

boundaryCondition.<name>.moment.x

boundaryCondition.<name>.moment.y

boundaryCondition.<name>.moment.z

x-direction of moment

y-direction of moment

z-direction of moment

boundaryCondition.<name>.acceleration.x

boundaryCondition.<name>.acceleration.y

boundaryCondition.<name>.acceleration.z

x-direction of acceleration

y-direction of acceleration

z-direction of acceleration

boundaryCondition.<name>.pointOfApplication.x

boundaryCondition.<name>.pointOfApplication.y

boundaryCondition.<name>.pointOfApplication.z

x-direction of point of application

y-direction of point of application

z-direction of point of application

boundaryCondition.<name>.pointOfApplication.coordinateSystem

Coordinate system related to the point of application

boundaryCondition.<name>.pressure

value of the pressure force

Example

Info

"boundaryCondition": {
".index": 7,
"ModelConstraintEvent_Constraint_1": {
".index": 4,
"displacement": {
".index": 0,
"x": "0",
"y": "0",
"z": "0"
},
"geometryName": "ModelConstraintEvent_Constraint_1"
},
"ModelLoadEvent_Force_-Moment_1_Force": {
".index": 0,
"coordinateSystem": "CoordSystem_Coordinate_System_1",
"geometryName": "ModelLoadEvent_Force-_Moment_1",
"load": {
".index": 0,
"z": "35598"
},
"pointOfApplication": {
".index": 1,
"x": "-0.0740283",
"y": "-0.0128969",
"z": "0.071124"

Configuration

configuration.symmetry.x

configuration.symmetry.y

configuration.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).

configuration.symmetry.coordinateSystemBase = CoordSystem_Coordinate_System_1coordinateSystem

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

configuration.maxConcurrentGPUSolvers

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

configuration.buildSpace

Geometry used for the intersection with the Design Space to receive the nominal geometry

configuration.offsetSpace

Geometry used for the intersection with the Design Space to receive the print geometry

configuration.unitSystem

Used unit system

configuration.eigenThreads

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.

configuration.complexity

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

configuration.solver.<name>.strategy

InternalCPU: CPU based solver

ExternLegacy: External (GPU) solver

configuration.solver.<name>.host

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=42001configuration.solver.<name>.port

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)

Example

Info

"configuration": {
".index": 9,
"buildSpace": "DesignSpace_machiningCut",
"complexity": "14",
"eigenThreads

...

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

...

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

...

": "4",
"offsetSpace": "DesignSpace_machiningOffset",
"remesher": {
".index": 1,
"designCandidateRemesher": {
".index": 0,
"enabled": "true"
},
"voxelIntersectionRemesher": {
".index": 1,
"enabled": "true"
}
},
"solver": {
".index": 0,
"solver1": {
".index": 0,
"host": "localhost",
"port": "42004",
"strategy": "ExternLegacy"
}
},
"unitSystem": "SI_K"

Coordinate System

coordinateSystem.<name>.alpha

coordinateSystem.<name>.beta

coordinateSystem.<name>.gamma

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

coordinateSystem.<name>.origin.x

coordinateSystem.<name>.origin.y

coordinateSystem.<name>.origin.z

The coordinate system has a point of origin.

coordinateSystem.<name>.base

Each coordinate system is given a unique name Coordinate_System_1

Example

Info

"coordinateSystem": {
".index": 6,
"CoordSystem_CSYS.0": {
".index": 0,
"alpha": "0",
"beta": "0",
"gamma": "0",
"origin": {
".index": 0,
"x": "0",
"y": "0",
"z": "0"

Design

design.<name>.geometryName

Definition of the Design Space.

design.<name>.materialName

Definition of material for the Design Space.

Example

Info

"design": {
".index": 3,
"DesignSpace_machiningCut": {
".index": 0,
"geometryName": "DesignSpace_machiningCut",
"materialName": "TiAl6V4"

Engine Version

Info

"engine_version": "2021.2",

Event

event.<name>.eventName

Specified name of the event.

event.<name>.safetyFactor

Event specific Safety Factor

Example

Info

"event": {
".index": 8,
"Event_1": {
".index": 0,
"condition": {
".index": 0,
"ModelConstraintEvent_Constraint_1": {
".index": 1
},
"ModelLoadEvent_Force_-_Moment_1_Force": {
".index": 0
}
},
"safetyFactor": "2"

Failure Criterion

Von Mises

failureCriterion.<name>.failureCriterion

Specified name of the Failure Criterion.

failureCriterion.<name>.tensileStrength

Tensile Strength of the material

Example von Mises

Info

"failureCriterion": {
".index": 1,
"Von_Mises": {
".index": 0,
"failureCriterion": "VonMises",
"tensileStrength": "6e+08"

Tsai Hill Failure Criterion

failureCriterion.<name>.failureCriterion

Specified name of the Failure Criterion.

failureCriterion.<name>.x_t

Axial Tensile Strength

failureCriterion.<name>.y_t

Transversal Tensile Strength

failureCriterion.<name>.x_c

Axial Compression Strength (3D Orthotropic Material)

failureCriterion.<name>.y_c

Transversal Compression Strength (3D Orthotropic Material)

failureCriterion.<name>.s

Shear Strength

Example Tsai Hill

Info

Tsai Wu Failure Criterion

failureCriterion.<name>.failureCriterion

Specified name of the Failure Criterion.

failureCriterion.<name>.x_t

Tensile Strength x

failureCriterion.<name>.y_t

Tensile Strength y

failureCriterion.<name>.z_t

Tensile Strength z (3D Orthotropic Material)

failureCriterion.<name>.x_c

Compression Strength x

failureCriterion.<name>.y_c

Compression Strength y

failureCriterion.<name>.z_c

Compression Strength z (3D Orthotropic Material)

failureCriterion.<name>.s_xy

Shear Strength in XY

failureCriterion.<name>.s_yz

Shear Strength in YZ (3D Orthotropic Material)

failureCriterion.<name>.s_zx

Shear Strength in ZX (3D Orthotropic Material)

Example Tsai Wu

Info

Geometry

In the Geometry section, all geometries and their paths are defined. For each geometry used in the optimisation an STL-file needs to be available in the optimisation folder.

geometry.<name>.isOpenSurface

geometry.<name>.useSurfaceOnly

geometry.<name>.useSurfaceCentroid

Indicates that the geometry is a surface and not a volume.

geometry.<name>.path

Path to the geometry file

Example

Info

"geometry": {
".index": 2,
"DesignSpace_machiningCut": {
".index": 0,
"path": "DesignSpace_machiningCut.stl"

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.<name>.geometryName

Specified name of the Machining Allowance reference geometry.

machiningOffset.<name>.offset

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

Example

Info

"machiningOffset": {
".index": 5,
"machOffset_MachiningAllowance_Machining_Allowance_1": {
".index": 0,
"geometryName": "MachiningAllowance_Machining_Allowance_1",
"offset": "0.001"

In the Geometry section, all geometries and their paths are defined. For each geometry used in the optimisation an STL-file needs to be saved in the optimisation folder.

Material

material.<name>.failureCriterionName

Name of the Failure Criterion

material.<name>.density

Material density

material.<name>.coordinateSystem

Coordinate system related to the material

Isotropic Material

material.<name>.elementMode

Specified material name

material.<name>.young

Young’s modulus

material.<name>.poisson

Poisson ratio

Example Isotropic Material

Info

"material": {
".index": 0,
"TiAl6V4": {
".index": 0,
"density": "4481.87",
"elementMode": "Isotropic",
"failureCriterionName": "Von_Mises",
"material": "",
"poisson": "0.26",
"young": "1.15617e+11"

3D Transversely Isotropic Material

material.<name>.elementMode

Specified material name

material.<name>.exx

material.<name>.eyy

Axial Young’s Modulus x

Transversal Young’s modulus yz

material.<name>.gxy

Shear modulus of parallel planes.

material.<name>.vxy

material.<name>.vyz

Axial Poisson ratio

Transversal Poisson ratio

Example 3D Transversely Isotropic Material

Info

"material": {
".index": 0,
"TiAl6V4": {
".index": 0,
"density": "4481.87",
"elementMode": "Isotropic",
"failureCriterionName": "Von_Mises",
"material": "",
"poisson": "0.26",
"young": "1.15617e+11"

3D Orthotropic Material

material.<name>.elementMode

Specified material name

material.<name>.exx

material.<name>.eyy

material.<name>.ezz

Young’s modulus x

Young’s modulus y

Young’s modulus z

material.<name>.gxy

material.<name>.gxz

material.<name>.gyz

Shear modulus of xy plane

Shear modulus of xz plane

Shear modulus of yz plane

material.<name>.vxy

material.<name>.vyx

material.<name>.vxz

material.<name>.vzx

material.<name>.vyz

material.<name>.vzy

xy component of Poisson ratio tensor

yx component of Poisson ratio tensor

xz component of Poisson ratio tensor

zx component of Poisson ratio tensor

yz component of Poisson ratio tensor

zy component of Poisson ratio tensor

Example 3D Orthotropic Material

Info

"material": {
".index": 0,
"TiAl6V4": {
".index": 0,
"density": "4481.87",
"elementMode": "Isotropic",
"failureCriterionName": "Von_Mises",
"material": "",
"poisson": "0.26",
"young": "1.15617e+11"

Non-Design Spaces

nonDesign.<name>.geometryName

Specified geometry name

nonDesign.<name>.preserveGeometry

The volume cannot be removed during the optimisation and will keep a connection to the rest of the design.

nonDesign.<name>.retainedVolume

A Retained Volumes specifies an area of the optimisation model which is included in the analysis but not in the design.

Example

Info

"nonDesign": {
".index": 4,
"MachiningAllowance_Machining_Allowance_1": {
".index": 11,
"geometryName": "MachiningAllowance_Machining_Allowance_1"

Schedule

Example

Info

"schedule": {
".index": 10,
"prefabricated": {
".index": 0,
"shapeQuality": "balanced",
"strutDensity": "medium"

Advanced User Settings

Have a look here for more information and commands that can be used.