TopologyOptimization (hwx.inspire.FEAnalysis)#
- class TopologyOptimization(params={}, runOptions={}, ignoreWarnings=False)#
Bases:
Optimization
Carve material away from design spaces, creating the lightest structure capable of withstanding the forces you apply to your model.
Attribute Table# Name
Type
Method Table# Name
Description
export
(file, params={}, runOptions={}, ignoreWarnings=False)Download solver file (.fem, .ssp) for run
importResults
(self, showExplorer=True)Make results available in the Shape Explorer.
reanalyze
(self, density, runOptions={}, ignoreWarnings=False)Run an OptiStructAnalysis on the generated shape.
switchToOptimizedParts
(self)Change part alternatives to this result.
Example
from hwx import inspire from hwx.inspire.demo import getDemoFilePath # With topology optimization, we can optimize the model for stiffness, frequency, or mass. # Get absolute path of a demo file 'SixSheets.stmod'. # This file is available in the Inspire demo directory # SixSheets.stmod have a pressure load and a support applied on it filepath= getDemoFilePath('SixSheets.stmod') # Open the model file model = inspire.openFile(filepath) # Alternatively, you can get existing model # model = inspire.getModel() # Create a Topology Optimization parameters object) params = inspire.TopologyOptimization.Params() # By default params initializes 'objective': 'MAXIMIZE_STIFFNESS', #massTarget = {'percent': 30.0},thicknessConstraints = {'min': 'auto', 'max': None} and #frequencyConstraints = None. # We can set the objective, massTarget, frequencyConstraints, parts, runName, safetyFactor, speedAccuracy and thicknessConstraints. # For example, we can set the objective to 'MAXIMIZE_STIFFNESS', 'MAXIMIZE_FREQUENCY', or 'MINIMIZE_MASS'. params.objective = 'MAXIMIZE_STIFFNESS' # or 'MAXIMIZE_FREQUENCY', 'MINIMIZE_MASS' # We can set the massTarget to a percentage of the total mass of the model. params.massTarget = {'percent': 30.0} #frequencyConstraints can be set to None or 'MAXIMIZE' or 'MINIMUM' with minFrequency and numModes. # We can set the frequencyConstraints to MAXIMIZE. params.frequencyConstraints = 'MAXIMIZE' # with maximum frequency, we can additionally set the loadCase . params.frequencyConstraints.loadCase = model.getChild(name='Load Case 1') # or None # We can set the frequencyConstraints to a minimum frequency and number of modes. #params.frequencyConstraints='MINIMUM' # with maximum frequency, we can set minrequency , modes the loadCase # params.frequencyConstraints.minFrequency = 10.0 # in Hz #params.frequencyConstraints.numModes = 2 # number of modes to be calculated #params.frequencyConstraints.loadCase = model.getChild(name='Load Case 1') # or None # safety Factor is applicable for MINIMIZE_MASS objective. # We can set the safetyFactor to a value greater than 1.0. params.safetyFactor = 1.2 # 'speedAccuracy': 'FASTER', # or 'MORE_ACCURATE' # We can set the speedAccuracy to 'FASTER' or 'MORE_ACCURATE'. params.speedAccuracy = 'FASTER' # or 'MORE_ACCURATE' # runName is the name of the run, which will be used to save the results. params.runName = 'SixSheets' # or any other name #thicknessConstraints can be set to a dictionary with min and max values. # We can set the thicknessConstraints to a dictionary with min and max values. params.thicknessConstraints = {'min': 'auto', 'max': None} # or {'min': 0.006, 'max': None} print('params', repr(params)) with inspire.gui.waitCursor(message="Solving..."): run = inspire.TopologyOptimization(params) inspire.orientView(direction="isometric") # After the run is completed, we can import the results. run.importResults() # We can also create PolyNurbs shape ou of topology optimized part. inspire.PolyNURBS.fitSynthesis( synthesis=run, curvature=60, numberOfFaces=2000, shrinkWrapSize=0.002, autoCrease=False, intersect=False, symmetry=True)
- class RunOptions(**kwds)#
Bases:
Struct
Attribute Table# Name
Type
property
property
- property isRemoteRun#
(bool) Is remote run
- repr()#
Convert params to a dict which can be used to reconstruct it.
Readonly attributes are removed and structs are compacted.
- todict()#
Convert params to a dict containing all properties
- property waitTillFinish#
(bool) Use False to do multiple runs in parallel
- class Status(value)#
Bases:
Enum
An enumeration.
Attribute Table# Name
Type
ERROR
Status
FE_NOT_REALIZED
Status
GENERATING_FE_MODEL
Status
INFEASIBLE_DESIGN
Status
INITIALIZED
Status
MESH_NOT_GENERATED
Status
NOT_CONVERGED
Status
NOT_STARTED
Status
PARTS_NOT_CONNECTED
Status
RUNNING
Status
SUCCESS
Status
TERMINATED
Status
WARNING
Status
- property active#
Returns or sets the object activeness.
Setting this on or off sets all children. Setting to True sets all the parents active too.
- destroy()#
Delete the object removing it from the model.
The object may come back due to an undo/redo.
- getAllChildren(type=None, **kwds)#
Returns a list of all children that matches the specified type.
- Parameters:
type (list[Named]) – Filter to use to get the children based on object type.
**kwds – Additional keyword arguments to match other attributes of the object.
- Returns:
The list of children that satisfy the supplied filters.
- Return type:
list[Union[Part, Motor, BoundaryCondition, …]]
- getAttribute(name)#
Returns the Attribute off the class, not the value.
- Parameters:
name (str) – Attribute name to find its class.
- getBrowserFolder(flatView) str | None #
Group objects by folder under getBrowserParent().
Use None for no folder.
Always specify a folder if flatView.
- getBrowserListenTo()#
Specify objects that gui attribute values depend on.
To make sure the Property Editor refreshes when they are modified.
- getBrowserName()#
Name shown in the Model Browser.
- getBrowserNameAddon()#
Specifies extra information about the object appended to its name in the Model Browser.
- getBrowserNameWithAddon()#
Name shown in the Model Browser with addon.
- getChild(name=None, recursive=False, **kwds)#
Returns the child of the object which matches the specified unique name.
- Parameters:
name (str) – The name of the child object.
recursive (bool) – Search all descendents.
**kwds – Additional keyword arguments to match attributes of the object.
- Returns:
The child object which satisfies the specified filters.
- Return type:
- getChildren(type=None, recursive=False, sorted=False, **kwds)#
Returns a list of children that is of the specified type.
- getContextMenu()#
Returns list of MenuItem objects to populate the context menu.
Also supports shorthand:
‘action name’
(text, callable),
(text, [sub menu])
‘-’ for section/separator line
- getDependents(recursive=False, **kwds)#
Get objects that reference this object through a Reference attribute.
- Parameters:
recursive (bool) –
**kwds – Filter objects using isa.
- Returns:
set[Named]
- getGuiValue(attr, **kwds)#
Get value formatted to be shown in the gui
- Parameters:
attr (str) – Attribute name to gets its gui value.
- Returns:
Returns a string of the value with its gui units, like “5 mm/s”.
- Return type:
str
- getIcon()#
Overload to specify different icons depending on the object.
- getReferences(recursive=False, **kwds)#
Get objects this object references through a Reference attribute.
- Parameters:
recursive (bool) –
**kwds – Filter objects using isa.
- Returns:
set[Named]
- getSecondaryIcon()#
Show a second icon next to primary icon in Model Browser tree. Commonly used to show warning icon widgetTaskWarning-12.png.
- getToolTip()#
Specifies the tooltip when object is hovered
- getValue(attr)#
Return the attribute value for passed attribute name.
- Parameters:
attr (String) – Attribute name to gets its value.
- Returns:
Returns the attribute value
- Return type:
str
- getVariable(propName)#
Get associated variable for the given property.
- Parameters:
propName (str) – Property name to get the associated variable.
- importResults(showExplorer=True)#
Make results available in the Shape Explorer.
- Parameters:
showExplorer (bool) – Opens the Shape Explorer dialog (gui mode only)
- property imported#
If True, Results are loaded.
- isBrowserNameModified(attr)#
Do we need to refresh the name in the Model Browser due to an onObjectModified?
- isa(type=None, filter=None, name=None, wildcard=None, **kwds)#
Determines if the object matches the specified settings or not.
- Parameters:
type (Union[Part, Assembly, Contact..]) – The type of the object.
filter (method) – Return value of specified callback method.
name (str) – Name that matches exactly with object name.
wildcard (str) – A pattern to match exactly with the object name.
**kwds – Additional keyword arguments to match other attributes.
- Returns:
True, if a match is found, otherwise False.
- Return type:
bool
- modelPositions()#
Forces all objects to return the original model positions instead of the current analysis positions.
Useful when defining draw methods on GeneralObjects where behaviour is different while animating.
- move(delta)#
Called when object moved by move tool.
- Parameters:
delta (math.Matrix44) –
- property name#
Returns or sets the name of the object.
It can be any text string, including spaces, although it’s best to avoid using the following characters: “ ‘ * ? and $.
While these characters are allowed, they could create difficulties when you export the model to other applications.
- property progress#
Current state of the Object.
- reanalyze(density, runOptions={}, ignoreWarnings=False)#
Run an OptiStructAnalysis on the generated shape.
- Parameters:
density (float) – Density threshold value. 1.0 - maximum density on design space. 0.0 - minimum density on design space.
runOptions (dict) – See cls.RunOptions
ignoreWarnings (bool) – Abort on warnings
- Returns:
OptiStructReanalysis
- setValue(attr, value)#
Alias for setattr (attr, value) :param attr: Attribute name to sets its value. :type attr: str :param value: Attribute value to set . :type value: str
- setValues(**kwds)#
Sets passed name/value pairs.
Values are set in a standard order (the order the attribute is defined on the class) which is required in certain cases when an attribute’s setter expects another attribute to have already been set. For example, setting a reference before a location that is wrt it.
- Parameters:
**kwds – Set attributes in one go.
- setVariable(propName, varName)#
Associate property to variable for named object.
- Parameters:
propName (str) – Property name to associate with variable.
varName (str) – The name of the variable to associate the attribute with.
- property solverType#
Solver Type of the Object
- property status#
Current status of the Object.
- property suppress#
Returns True if the object is suppressed.
- Type:
bool
- property suppressible#
(bool) Show option to suppress object in the context menu.
Suppressed objects are deactivated (obj.active == False) so they don’t contribute to analyses.
The suppressed object will remain in the Model Browser (in a disabled state) so the user can unsuppress it.
Defaults to True
- switchToOptimizedParts()#
Change part alternatives to this result.
- property visible#
Determines whether the object is visible in the graphics window.
Setting this on or off sets all children. Setting to True sets all the parents visible too.
- wasValueSet(attr)#
Check if attribute was set
- Parameters:
attr (str) – Attribute name to check it value set or not
- Returns:
True, if value was set else false.
- Return type:
bool
- property workingDir#
Working directory of the Object