Home
Abaqus Scripting User's Manual
Contents
1. How the object model for the output database relates to commands Section 10 4 Object model for the output database Section 10 5 Compiling and linking your C source code Section 10 6 Accessing the C interface from an existing application Section 10 7 The Abaqus C API architecture Section 10 8 Utility interface Section 10 9 Reading from an output database Section 10 10 Writing to an output database Section 10 11 Exception handling in an output database Section 10 12 Computations with Abaqus results Section 10 13 Improving the efficiency of your scripts Section 10 14 Example programs that access data from an output database Section 10 15 Overview The C interface to an output database is related closely to the Abaqus Scripting Interface Disparities between the two interfaces are due to fundamental differences in the programming languages The C interface is intended for users with high performance requirements others are encouraged to use the Abaqus Scripting Interface 10 2 A working knowledge of the C programming language is assumed What do you need to access the output database To use the Abaqus C API to access an output database you need to understand the following The fundamentals of Abaqus output data and the Abaqus concepts of instances fields and history How to program in C How to use the C API utility inte
2. Instance the part odb String partInstanceName part 1 1 odb Instance amp instancel odb rootAssembly Instance partInstanceName partl1 create instance level sets for section assignment elsetName Material 1 odb Set amp elset_1 instancel ElementSet elsetName elLabels section assignment on instance instancel assignSection elset _1 section 1 Field data Create a step and a frame odb String stepName step 1 odb String stepDescription first analysis step odb Step amp stepl odb Step stepName stepDescription odb Enum TIME 1 0 int incrementNumber 1 float analysisTime 0 1 odb String frameDescription results frame for time frameDescription append analysisTime odb Frame framel step1l Frame incrementNumber analysisTime frameDescription Write nodal displacements odb String fieldName U odb String fieldDescription Displacements odb FieldOutput amp uField framel FieldOutput fieldName fieldDescription odb Enum VECTOR 10 71 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE odb SequenceSequenceFloat dispData odb SequenceFloat dispDatal1 6 create some displacement values for n 0 n lt 6 n for int m 1 m lt 4 m dispDatal n append n 3 m dispData append dispDatal n uField addData odb Enum NODAL instancel nodeLabels dispData Make this the default deformed field for visualization step
3. Section 5 2 1 Access Section 5 2 2 Path Section 5 2 3 Arguments Section 5 2 4 Return value Section 5 2 5 How the commands are ordered The following list describes the order in which commands are documented in the Abaqus Scripting Reference Manual e Chapters are grouped alphabetically by functionality In general the functionality corresponds to the modules and toolsets that are found in Abaqus CAE for example Chapter 3 Amplitude commands of the Abaqus Scripting Reference Manual Chapter 4 Animation commands of the Abaqus Scripting Reference Manual and Chapter 6 Assembly commands of the Abaqus Scripting Reference Manual Within each chapter the primary objects appear first and are followed by other objects in alphabetical order For example in Chapter 30 Mesh commands of the Abaqus Scripting Reference Manual the objects are listed in the following order Assembly Part ElemType MeshEdge MeshElement MeshFace MeshNode MeshStats Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE e Within each object description the commands are listed in the following order Constructors in alphabetical order Methods in alphabetical order Members e Some methods are not associated with an object and appear at the end of a chapter for example the evaluateMaterial method appears at the end of Chapter 28 Material commands of the Abaqus Scripting Reference
4. The region commands are described in Chapter 44 Region commands of the Abaqus Scripting Reference Manual Materials You use the Material object to list material properties Materials are stored in the materials repository under the Odb object To create an isotropic elastic material with a Young s modulus of 12000 0 and an effective Poisson s ratio of 0 3 in the output database materialName Elastic Material material 1 odb Material name materialName material 1 Elastic type ISOTROPIC table 12000 0 3 For more information see Chapter 28 Material commands of the Abaqus Scripting Reference Manual Sections You use the Section object to create sections and profiles 9 29 Oo WRITING TO AN OUTPUT DATABASE Sections are stored in the sections repository under the Odb object The following code creates a homogeneous solid section object A Material object must be present before creating a Section object An exception is thrown if the material does not exist sectionName Homogeneous Solid Section mySection odb HomogeneousSolidSection name sectionName material materialName thickness 2 0 To create a circular beam profile object in the output database profileName Circular Profile radius 10 00 odb CircularProfile name profileName r radius Section assignments You use the SectionAssignment object to assign sections and their associated material properties to regions
5. e Utility interface classes Section 10 9 1 e Utility interface examples Section 10 9 2 10 9 1 Utility interface classes The following interface classes are provided Strings The odb_String object provides a convenient means of storing and passing strings The odb_ String object also provides a simple interface to append and modify the data stored in the string Sequences An odb_ Sequence class is a container used to hold an ordered list of objects of a specific type Data can be appended and retrieved from the sequence The following odb_Sequence objects are provided to store integer float and enumeration data e odb_Sequencelnt e odb_SequenceFloat e odb_SequenceString e odb_SequenceInvariant e odb_SequenceElementFace 10 16 UTILITY INTERFACE Sequences of sequences are also available in the following forms e odb_SequenceSequenceF loat e odb_SequenceSequenceSequenceF loat e odb_SequenceSequencelInt e odb_SequenceSequenceElementFace The following Abaqus objects are also stored as sequences e odb_SequenceNode e odb_SequenceElement e odb_SequenceField Value e odb_SequenceFrame e odb_SequenceSectionPoint e odb_SequenceLoadCase The following Abaqus object can be collected in a sequence for utility operations e odb_SequenceFieldOutput Repositories Repositories are provided to store objects retrieved by name Both the repositories and the content of the repositories are created by the API the user can only retr
6. gt gt gt annotationString Symbol plot from loadl odb gt gt gt annotationString upper SYMBOL PLOT FROM LOAD1 ODB gt gt gt annotationString split Symbol plot from loadl odb As with all sequences you use negative indices to index backward from the end of a string gt gt gt axis label maxstrain gt gt gt axis label 1 ry Use the built in str function to convert an object to a string gt gt gt myList 8 9 10 gt gt gt str myList 8 9 10 Look at the standard Python documentation on the official Python web site www python org for a list of common string operations String functions are described in the String Services section of the Python Library Reference Array Arrays are mutable homogeneous sequences The numpy module allows you to create and operate on multidimensional arrays Python determines the type of elements in the array you do not have to declare the type when you create the array For more information about the numpy module see numpy scipy org 4 12 THE BASICS OF PYTHON gt gt gt from numpy import array gt gt gt myIntegerArray array 1 2 2 3 3 4 gt gt gt myIntegerArray array 1 2 2 3 3 4 gt gt gt myRealArray array 1 0 2 2 3 3 4 gt gt gt myRealArray array 1 2 1 2 3 3 4 11 gt gt gt myRealArray myIntegerArray array 1 4 4 9 9 16
7. 1 odb FieldOutputContainer fieldCon lastFrame fieldOutputs odb FieldOutput field fieldCon S odb FieldOutput iPointFieldData field getSubset odb Enum INTEGRATION POINT odb SequenceInvariant myInvariants field validInvariants e The next to last line shows the getSubset method of the FieldOutput object e The last line shows the validInvariants member of the FieldOutput object 10 3 5 Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE 10 3 3 Path A method that creates an object is called a constructor The Abaqus C API uses the convention that constructors begin with an uppercase character In contrast methods that operate on an object begin with a lowercase character The description of each constructor in the Abaqus Scripting Reference Manual includes a path to the command For example the following describes the path to the Part constructor odb Part Some constructors include more than one path For example you can create a nodeSet that is associated with either a Part object or the RootAssembly object and each path is listed odb parts name NodeSet odb rootAssembly NodeSet The path is not listed if the method is not a constructor If you are using the Abaqus C API to read data from an output database the objects exist when you open the output database and you do not have to use constructors to create them However if you are creating or writing to an output database yo
8. Abaqus 6 11 Scripting User s Manual 2 DS SIMULIA Abaqus Scripting User s Manual Legal Notices CAUTION This documentation is intended for qualified users who will exercise sound engineering judgment and expertise in the use of the Abaqus Software The Abaqus Software is inherently complex and the examples and procedures in this documentation are not intended to be exhaustive or to apply to any particular situation Users are cautioned to satisfy themselves as to the accuracy and results of their analyses Dassault Syst mes and its subsidiaries including Dassault Systemes Simulia Corp shall not be responsible for the accuracy or usefulness of any analysis performed using the Abaqus Software or the procedures examples or explanations in this documentation Dassault Syst mes and its subsidiaries shall not be responsible for the consequences of any errors or omissions that may appear in this documentation The Abaqus Software is available only under license from Dassault Syst mes or its subsidiary and may be used or reproduced only in accordance with the terms of such license This documentation is subject to the terms and conditions of either the software license agreement signed by the parties or absent such an agreement the then current software license agreement to which the documentation relates This documentation and the software described in this documentation are subject to change without prior notice No part of t
9. REPRODUCING THE CANTILEVER BEAM TUTORIAL mySection myModel HomogeneousSolidSection name beamSection material Steel thickness 1 0 Assign the section to the region The region refers to the single cell in this model region myBeam cells myBeam SectionAssignment region region sectionName beamSection import assembly Create a part instance myAssembly myModel rootAssembly myInstance myAssembly Instance name beamInstance part myBeam dependent OFF import step Create a step The time period of the static step is 1 0 and the initial incrementation is 0 1 the step is created after the initial step myModel StaticStep name beamLoad previous Initial timePeriod 1 0 initialInc 0 1 description Load the top of the beam import load Find the end face using coordinates endFaceCenter 100 0 12 5 endFace myInstance faces findAt endFaceCenter REPRODUCING THE CANTILEVER BEAM TUTORIAL Create a boundary condition that encastres one end of the beam endRegion endFace myModel EncastreBC name Fixed createStepName beamLoad region endRegion Find the top face using coordinates topFaceCenter 0 10 12 5 topFace myInstance faces findAt topFaceCenter Create a pressure load on the top face of the beam topSurface topFace SIDE1 myModel Pressure name Pressure createStepName beamLoad region topSurface magnitude 0 5
10. Singular object Objects that are not containers are shown asa Singular object A singular object contains no other objects of a similar type for example the Session object and the Mdb object There is only one Session object and only one Mdb object in the Abaqus object model The at the end of the object models shown in this section indicates that there are additional objects in the model that are not included in the figure For clarity the figures show only the most commonly used objects in the object model The statement from abaqus import imports the Session object named session and the Mdb object named mdb and makes them available to your scripts The statement from odbAccess import allows you to access Abaqus output results from your script The Session Mdb and Odb objects are described as follows Session Session objects are objects that are not saved between Abaqus CAE sessions for example the objects that define viewports remote queues and user defined views as shown in Figure 6 2 The viewports container is owned by the Session object as shown in Figure 6 3 Mdb The statement from abaqus import creates an instance of the Mdb object called mdb Mdb objects are objects that are saved in a model database and can be recovered between Abaqus CAE sessions Mdb objects include the Model object and the Job object The Model object in turn is comprised of Part objects Section objects Material objects St
11. abaqus pde filenames script filename pde Abaqus CAE command line arguments where abaqus is the command used to start Abaqus and filenames are the names including the directory paths of scripts to be opened at startup The script option allows you to enter the name including the directory path of a main file to be opened at startup The Abaqus PDE will create a new blank script if the named file does not exist in the specified directory If the directory does not exist the Abaqus PDE generates an error message Note File names and paths specified without the script option are opened for editing not as the main file The pde option is used to specify options for use with Abaqus CAE if you run a script in the Abaqus PDE that requires the Abaqus CAE kernel or user interface You can also add command line options for Abaqus CAE using the Settings menu For more information see Selecting the settings for use with a file Section 7 2 4 The sections that follow describe how to use the menus and tools within the Abaqus PDE 7 3 Abaqus PDE BASICS 7 2 2 Managing files in the Abaqus PDE You can use the File menu and tools to manage files in the Abaqus PDE You can work with multiple scripts but you can test only one script at a time The file to be tested is called the Main File The path and file name of the main file are displayed near the upper left corner of the Abaqus PDE window You can open the main file by us
12. e Create and modify the model databases and models that are created interactively when you work with Abaqus CAE The Abaqus Scripting Interface is an application programming interface API to your model databases and models For a discussion of model databases and models see What is an Abaqus CAE model database Section 9 1 of the Abaqus CAE User s Manual and What is an Abaqus CAE model Section 9 2 of the Abaqus CAE User s Manual e Access the data in an output database For example you may wish to do your own postprocessing of analysis results You can write your own data to an output database and use the Visualization module of Abaqus CAE to view its contents The Abaqus Scripting Interface is an extension of the popular object oriented language called Python Any discussion of the Abaqus Scripting Interface applies equally to Python in general and the Abaqus Scripting Interface uses the syntax and operators required by Python 2 1 a HOW DOES THE Abaqus SCRIPTING INTERFACE INTERACT WITH Abaqus CAE 2 2 How does the Abaqus Scripting Interface interact with Abaqus CAE Figure 2 1 illustrates how Abaqus Scripting Interface commands interact with the Abaqus CAE kernel r Abaqus CAE command line f GUI interface Script CLI N commands 7 NA Python interpreter Abaqus CAE kernel replay files input file Abaqus Standard Abaqus Explicit Abaqus CFD Abaqus Design o
13. The history data object model is shown in Figure 10 5 In contrast to field output which is associated with a frame history output is associated with a step History output data are stored in the historyRegions repository under an OdbStep object Abaqus creates keys to the historyRegions repository that describe the region for example e Node PART 1 1 1000 e Element PART 1 1 2 Int Point 1 e Assembly rootAssembly The output from all history requests that relate to a specified point is collected in one HistoryRegion object A HistoryRegion object contains multiple HistoryOutput objects Each HistoryOutput object in turn contains a sequence of frameValue value sequences In a time domain analysis domain TIME the sequence is a tuple of stepTime value Ina frequency domain analysis domain FREQUENCY the sequence is a tuple of frequency value In a modal domain analysis domain MODAL the sequence is a tuple of mode value In the analysis that generated the Abaqus CAE Visualization module tutorial output database the user asked for the following history output At the rigid body reference point Node 1000 e U eV e A At the corner element e MISES e LE22 10 36 Container IH Singular object READING FROM AN OUTPUT DATABASE parts sections materials Model Data steps frames HE fieldOutputs historyRegions historyOutputs AE data Results Data Figure 10 5 The history data object mode
14. from abaqusConstants import These statements make the basic Abaqus objects accessible to the script as well as all the Symbolic Constants defined in the Abaqus Scripting Interface import visualization This statement provides access to the commands that replicate the functionality of the Visualization module in Abaqus CAE Abaqus Viewer myViewport session Viewport name Superposition example This statement creates a new viewport named Superposition example in the session The new viewport is assigned to the variable myViewport The origin and the size of the viewport assume the default values odbPath viewer tutorial odb This statement creates a path to the tutorial output database myOdb session openOdb path odbPath This statement uses the path variable odbPath to open the output database and to assign it to the variable myOdb myViewport setValues displayedObject myOdb This statement displays the default plot of the output database in the viewport firstStep myOdb steps Step 1 secondStep myOdb steps Step 2 These statements assign the first and second steps in the output database to the variables firstStep and secondStep framel frame2 firstStep frames 1 secondStep frames 1 These statements assign the last frame of the first and second steps to the variables frame1 and frame2 In Python an index of 0 refers to the first item in a sequence An index of 1 refers to the last item in
15. odb rootAssembly Model data output print Model data for ODB odbPath For each instance in the assembly numNodes numElements 0 for name instance in assembly instances items n len instance nodes print Number of nodes of instance s d name numNodes numNodes n print print NODAL COORDINATES For each node of each part instance print the node label and the nodal coordinates 9 23 n READING FROM AN OUTPUT DATABASE Three dimensional parts include X Y and Z coordinates Two dimensional parts include X and Y coordinates if instance embeddedSpace THREE D print X Y Z for node in instance nodes print node coordinates else print X Y for node in instance nodes print node coordinates For each element of each part instance print the element label the element type number of nodes and the element connectivity n len instance elements print Number of elements of instance name numElements numElements n print ELEMENT CONNECTIVITY print Number Type Connectivity for element in instance elements print 5d 8s element label element type for nodeNum in element connectivity print 4d nodeNum print print print Number of instances len assembly instances print Total number of elements numElements print Total number of nodes numNodes 9 5 10 An example of reading field data from an output database Th
16. 1 1 0 1 partl1 addNodes nodeData nodeData nodeSetName nset 1 elementData 1 1 2 3 4 2 6 5 2 1 partl addElements elementData elementData type S4 elementSetName eset 1 sectionCategory sCat Instance the part instancel odb rootAssembly Instance name part 1 1 object part1 create instance level sets for section assignment elLabels 1 2 elset_ 1 odb rootAssembly instances part 1 1 ElementSetFromElementLabels name materialName elementLabels elLabels instancel assignSection region elset 1 section section 1 Field data Create a step and a frame stepl odb Step name step 1 description first analysis step domain TIME timePeriod 1 0 analysisTime 0 1 framel stepl Frame incrementNumber 1 frameValue analysisTime description results frame for time str analysisTime 9 50 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE Write nodal displacements uField framel FieldOutput name U description Displacements type VECTOR nodeLabelData 1 2 3 4 5 6 dispData 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 uField addData position NODAL instance instancel labels nodeLabelData data dispData Make this the default deformed field for visualization stepl1 setDefaultDeformedField uField uu Write stress tensors output only available at top bottom section points The element defi
17. 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 transform 1 0 0 0 1 0 0 0 1 sField framel FieldOutput name S description Stress type TENSOR 3D PLANAR componentLabels S11 S22 S33 S 12 validInvariants MISES sField addData position INTEGRATION POINT sectionPoint spTop instance instancel labels elementLabelData data topData localCoordSystem transform sField addData position INTEGRATION POINT sectionPoint spBot instance instancel labels elementLabelData data bottomData localCoordSystem transform For this step make this the default field for visualization stepl setDefaultField sField For a full description of the addData command see addData Section 33 6 3 of the Abaqus Scripting Reference Manual As a convenience ocalCoordSystem can be a single transform or a list of transforms If localCoordSystem is a single transform it applies to all values If localCoordSystem is a list of transforms the number of items in the list must match the number of data values 9 6 5 Default display properties The previous examples show how you can use commands to set the default field variable and deformed field variable Abaqus CAE uses the default field variable setting to determine the variable to display in 9 34 WRITING TO AN OUTPUT DATABASE a contour plot for example stress Similarly the default deformed field variab
18. 2 Open the file that you want to debug 3 Position the cursor where you want to add a breakpoint Click mouse button 3 and select Add Breakpoint For more information see Using breakpoints Section 7 3 4 4 Click Start CAE at the top right of the Abaqus PDE to start Abaqus CAE with the custom startup commands 5 The application code appears in the Abaqus PDE window stopped at a breakpoint 6 Use the Abaqus PDE controls and options described in the previous sections to step through the execution of the custom application Part IV Putting it all together examples The section provides examples that illustrate how you can combine Abaqus Scripting Interface commands and Python statements to create your own scripts You can use the scripts to create Abaqus CAE models submit jobs for analysis and view the results The following topic is covered e Chapter 8 Abaqus Scripting Interface examples For examples of scripts that read and write from an output database see Example scripts that access data from an output database Section 9 10 8 Abaqus SCRIPTING INTERFACE EXAMPLES Abaqus Scripting Interface examples The Abaqus CAE example scripts in this chapter illustrate the following e How you can use commands from the Abaqus Scripting Interface to create a simple model submit it for analysis and view the results Reproducing the cantilever beam tutorial Section 8 1 uses Abaqus Scripting Interf
19. Parts A part in the output database is a finite element idealization of an object Parts are the building blocks of an assembly and can be either rigid or deformable Parts are reusable they can be instanced multiple times in the assembly Parts are not analyzed directly a part is like a blueprint for its instances A part is stored in an output database as a collection of nodes elements surfaces and sets The root assembly The root assembly is a collection of positioned part instances An analysis is conducted by defining boundary conditions constraints interactions and a loading history for the root assembly The output database object model contains only one root assembly Part instances A part instance is a usage of a part within the assembly All characteristics such as mesh and section definitions defined for a part become characteristics for each instance of that part they are inherited by the part instances Each part instance is positioned independently within the root assembly 10 7 OBJECT MODEL FOR THE OUTPUT DATABASE Materials Materials contain material models comprised of one or more material property definitions The same material models may be used repeatedly within a model each component that uses the same material model shares identical material properties Many materials may exist within a model database but only the materials that are used in the assembly are copied to the output database Section
20. Steps An Abaqus analysis contains a sequence of one or more analysis steps Each step is associated with an analysis procedure 10 9 OBJECT MODEL FOR THE OUTPUT DATABASE Frames Each step contains a sequence of frames where each increment of the analysis that resulted in output to the output database is called a frame Ina frequency or buckling analysis each eigenmode is stored as a separate frame Similarly in a steady state harmonic response analysis each frequency is stored as a separate frame Field output Field output is intended for infrequent requests for a large portion of the model and can be used to generate contour plots animations symbol plots and displaced shape plots in the Visualization module of Abaqus CAE You can also use field output to generate an X Y data plot Only complete sets of basic variables for example all the stress or strain components can be requested as field output Field output is composed of a cloud of data values e g stress tensors at each integration point for all elements Each data value has a location type and value You use the regions defined in the model data such as an element set to access subsets of the field output data Figure 10 3 shows the field output data object model within an output database History output History output is output defined for a single point or for values calculated for a portion of the model as a whole such as energy History output is int
21. The perturbation weighting factors outNameUser The output file name optional Use the following command to retrieve the example script abaqus fetch job odbPert Abaqus Scripting Interface version of FPERT a FORTRAN program to create a perturbed mesh from original coordinate data and eigenvectors FPERT is described in the Abaqus Example Problems Manual import sys from odbAccess import from types import IntType Get input from the user odbName raw_input Enter odb name w o odb modes eval raw_input Enter mode shape s if type modes is IntType modes modes odb openOdb odbName odb Get the undeformed coordinates from the first step and frame step odb steps values 0 9 55 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE try coords step frames 0 fieldOutputs COORD except err The analysis must include a field output request for variable COORD print err sys exit 1 Perturb the nodal coordinates factors for mode in modes try frame step frames mode except IndexError print Input error mode s does not exist mode sys exit 1 factors append float raw_input Enter imperfection factor for mode s mode coords coords factors 1 frame fieldOutputs U Write new nodal coordinates to a file outFile open odbName perturbed inp w header nunun kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
22. U comp lt lt cout lt lt endl The resulting output is Node 1 U x 0 0000 Uly 76 4580 Node 3 U x 0 0000 Uly 64 6314 Node 5 U x 0 0000 Uly 52 0814 Node 7 U x 0 0000 Uly 39 6389 Node 9 U x 0 0000 Uly 28 7779 Node 11 U x 0 0000 Uly 20 3237 The data in the Field Value object depend on the field output variable which is displacement in the above example In the example above the field output for displacements was of type NODAL and there is a FieldValue object for the output at each node In this case the data method returns a pointer to an array containing the displacements at the node For INTEGRATION _ POINT data each integration point in an element will correspond to a different FieldValue object and the data method will return a pointer to an array containing the element results data at that particular integration point Note Access to field data using the FieldValue object will be deprecated in future releases of the C version of the Abaqus Scripting Interface because of the improved performance of the bulk data access method For more information see FieldBulkData object Section 60 5 of the Abaqus Scripting Reference Manual and Using bulk data access to an output database Section 10 10 7 10 10 7 Using bulk data access to an output database If you need to access all the data in a field from an output database you can use the bulkDataBlocks
23. When this option is selected Abaqus PDE stops at the line after the change e You can remove any watch variables from the debugger by clicking mouse button 3 on the variable s line and selecting Delete watch var variable name from the list that appears 7 3 4 Using breakpoints Breakpoints are points where script execution pauses until you select Play gt or Next Line I gt above the main window You can add them at any line in a script Breakpoints also allow you to pause plug ins and custom applications so you can trace their execution To add a breakpoint position the cursor on the desired line of the script click mouse button 3 and select Add Breakpoint Use the same process selecting Remove Breakpoint to remove breakpoints You can also add and remove breakpoints using the breakpoint tool located above the main window or the F9 key Breakpoints are indicated by an asterisk to the right of the line number in the Abaqus PDE If syntax colors are active the line number asterisk and the line of code are colored using the current breakpoint color selection for more information see Selecting the settings for use with a file Section 7 2 4 USING THE Abaqus PDE You can review breakpoints in all open files by selecting Window Debug Windows Breakpoints List The Abaqus PDE Breakpoints dialog box lists the file path name and each line number where a breakpoint is located You can double click the paths to position the
24. and the user enters the requested values in text fields in the dialog box The values are returned to the executing script as a sequence of Strings after the user clicks the OK button or presses Enter Optionally you can specify default values to be displayed in the text fields For more information see getInputs Section 52 5 2 of the Abaqus Scripting Reference Manual The following examples illustrate the use of the get Inputs function to obtain a sequence of numbers from the user from abaqus import getInputs fields Width 10 Length 20 Height 30 length width height getInputs fields fields label Specify block dimensions dialogTitle Create Block print length width height The following figure shows the dialog box that these statements create Create Block Specify block dimensions Width fi 0 Length 20 Height 30 Cancel The fields argument to the getInputs method is a sequence of sequences of Strings The inner sequence is a pair of Strings that specifies the description of the text field and the default value of the field If the text field does not have a default value you must specify an empty string for example fields Width Length Height length width height getInputs fields fields label Specify block dimensions The Jabel argument to the get Inputs method is an optional label that appears across the top of the dialog
25. and title block and whether the legend background matches the viewport These options affect the commands recorded for an output database Allow Editing of Files Toggle between edit and read only modes for all files Editing is allowed by default Show File Line Numbers Display line numbers for any open files on the left side of the main window Line numbers are displayed by default Ignore Breakpoints During Play Run the main file continuously skipping any breakpoints until it completes or stops for an error Breaks are not skipped by default You can also skip breakpoints by toggling on Ignore breaks located in the toolbar above the main window 7 7 Abaqus PDE BASICS Allow Pause in Play Pause a running file by clicking the Pause button Pause is allowed by default Allowing pause also causes the main file to run in the debugger For more information see Using the debugger Section 7 3 3 Set Last Main File on Startup Upon startup automatically reopen the main file that was open when you last closed the Abaqus PDE Run Script In Select whether the main file is run in the Abaqus CAE GUI the Abaqus CAE kernel or run locally By default guiLog files are run in the GUI and py and other file types are run in the kernel You can also set this option using the GUI Kernel and Local radio buttons located above the main window If the Abaqus PDE was opened without Abaqus CAE and you run a script with the GUI o
26. commands You need to understand the object model for the output database both to read data from it and to write data to it An object model describes the relationship between objects The object model for the Abaqus CAE model is described in The Abaqus object model Section 6 1 9 1 5 OBJECT MODEL FOR THE OUTPUT DATABASE For example consider the object model for field output data shown in Figure 9 1 The Odb object at the top of the figure is created when you issue the command to open or create an output database As you move down the object model an OdbStep object is a member of the Odb object similarly a Frame object is a member of the OdbStep object The FieldOutput object has two members fieldValue and fieldLocation The object model translates directly to the structure of an Abaqus Scripting Interface command For example the following command refers to a Frame object in the sequence of frames contained in an OdbStep object odb steps 10 hz vibration frames 3 Similarly the following command refers to the sequence of field data contained in a FieldOutput object odb steps 10 hz vibration frames 3 fieldOutputs U values 47 You use commands to access objects by stepping through the hierarchy of objects in the object model The Access and Path descriptions in Chapter 33 Odb commands of the Abaqus Scripting Reference Manual describe the interface definition of the command The interface defini
27. cursor in the main window at the selected breakpoint 7 3 5 Using the Abaqus PDE with plug ins The functions and tools in the Abaqus PDE work the same way for plug ins as they do for other scripts However since plug ins are launched within Abaqus CAE you cannot load and run them as a main file like you can with other scripts Instead you add breakpoints then run the plug ins as usual If the plug in contains both kernel and GUI functions you must trace them separately Tracing the kernel and GUI functions separately prevents problems that can occur in Abaqus CAE as the Abaqus PDE attempts to switch between kernel and GUI modes while the code is running Separating the functions also provides a logical approach to locating problems in the kernel code versus ones in the user interface After you save the changes to your plug in you can trace its execution To trace the execution of a plug in 1 Open the file that you want to debug 2 Position the cursor where you want to add a breakpoint Click mouse button 3 and select Add Breakpoint For more information see Using breakpoints Section 7 3 4 3 Start the plug in from within Abaqus CAE The plug in code appears in the Abaqus PDE window stopped at the breakpoint or at the line immediately following the start trace statement if you added one 4 Use the Abaqus PDE controls and options described in the previous sections to step through the execution of the plug in 7 3 6
28. following gt gt gt guiPreferences Abaqus CAE Geometry AFXMainWindow 193 67 800 600 You can save the options you change to the original file by issuing the following command gt gt gt sessionOptions save 8 23 Part V Accessing an output database This section describes how you access the data in an output database using either the Abaqus Scripting Interface or the C Application Programming Interface API You can read model data and field and history data from an output database You can also write field and history data to an output database The following topics are covered e Chapter 9 Using the Abaqus Scripting Interface to access an output database e Chapter 10 Using C to access an output database The Abaqus Scripting Interface commands that read and write data from an output database are described in Chapter 33 Odb commands of the Abaqus Scripting Reference Manual The C commands that read and write data from an output database are described in Chapter 60 Odb commands of the Abaqus Scripting Reference Manual HOW THE OBJECT MODEL FOR THE OUTPUT DATABASE RELATES TO COMMANDS 9 Using the Abaqus Scripting Interface to access an output database The following sections describe the architecture of an output database and how to use the Abaqus Scripting Interface to access data from an output database The following topics are covered e What do you need to access
29. following statements display the repository keys of the part instances in the tutorial output database odb InstanceRepositoryIT instIter rootAssy instances for instIter first instIter isDone instIter next cout lt lt instIter currentKey CStr lt lt endl The output database contains only one part instance and the resulting output is PART 1 1 From a part instance or part you can retrieve the node and element information as follows odb Instance amp instancel rootAssy instances PART 1 1 odb Enum odb DimensionEnum instanceType instancel embeddedSpace const odb SequenceNode amp nodeList instancel nodes int nodeListSize nodeList size if instanceType odb Enum THREE D for int n 0 n lt nodeListSize n const odb Node node nodeList n int nodeLabel node label const float const coord node coordinates cout lt lt Xcoord lt lt coord 0 lt lt Ycoord lt lt coord 1 lt lt Zcoord lt lt coord 2 lt lt endl else if instanceType odb Enum TWO D PLANAR instanceType odb Enum AXISYMMETRIC for int n 0 n lt nodeListSize n const odb Node node nodeList n int nodeLabel node label const float const coord node coordinates cout lt lt Xcoord lt lt coord 0 lt lt Ycoord lt lt coord 1 lt lt endl 10 21 READING FROM AN OUTPUT DATABASE const odb SequenceEl
30. lt lt odbPath CStr lt lt does not exist n lt lt endl exit 1 ifOdbName true else if strncmp argv arg e 2 0 argt t elsetName argv arg ifElset true else if strncmp argv arg h 2 0 printExecutionSummary exit 0 if ifOdbName cerr lt lt ERROR output database name is not provided n printExecutionSummary exit 1 Open the output database odb Odb amp myOdb openOdb odbPath odb Assembly amp myAssembly myOdb rootAssembly if ifElset 10 64 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE if myAssembly elementSets isMember elsetName myElset myAssembly elementSets elsetName region in the element set elsetName else cerr lt lt An assembly level elset lt lt elsetName CStr lt lt does not exist in the output database lt lt myOdb name CStr lt lt endl myOdb close exit 0 Initialize maximum values float maxMises 0 1 int numFV 0 int maxElem 0 odb String maxStep _ None int maxFrame 1 static const odb String Stress S bool isStressPresent false int numBD 0 numElems 0 numIP 0 numComp 0 position 0 Iterate over all available steps odb StepRepository amp sRepl myOdb steps odb StepRepositoryIT sIterl sRep1 for sIterl first sIterl isDone sIterl next odb Step amp s
31. lt maxMises lt lt in element lt lt maxElem lt lt endl cout lt lt Location frame lt lt maxFrame lt lt step 10 66 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE lt lt maxStep CStr lt lt endl else cout lt lt Stress output is not available in the lt lt output database lt lt myOdb name CStr lt lt endl close the output database before exiting the program myOdb close return 0 bool fileExists const odb String amp string bool exists false struct stat buf if stat string CStr amp buf 0 exists true return exists void rightTrim odb String amp string const char char set int length string Length if string Find char_ set length string append odb String char set void printExecutionSummary cout lt lt Code to determine the location and value of the n lt lt maximum von mises stress in an output database n lt lt Usage abaqus odbMaxMises odb odbName n lt lt elset optional elsetName n lt lt Requirements n lt lt 1 odb Name of the output database n lt lt 2 elset Name of the assembly level element set n lt lt Search will be done only for element n lt lt belonging to this set n lt lt If this parameter is not provided search n lt lt will be performed over the entire model n 10 67 EXAMPLE PR
32. nunun from odbAccess import from odbMaterial import 9 48 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE from odbSection import from abaqusConstants import def createODB Create an ODB which also creates the rootAssembly odb Odb name simpleModel analysisTitle ODB created with Python ODB API description example illustrating Python ODB API path odbWritePython odb create few materials materialName Elastic Material material 1 odb Material name materialName material 1 Elastic type ISOTROPIC temperatureDependency OFF dependencies 0 noCompression OFF noTension OFF moduli LONG TERM table 12000 0 3 create few sections sectionName Homogeneous Shell Section section 1 odb HomogeneousShellSection name sectionName material materialName thickness 2 0 Model data Set up the section categories sCat odb SectionCategory name S5 description Five Layered Shell spBot sCat SectionPoint number 1 description Bottom spMid sCat SectionPoint number 3 description Middle spTop sCat SectionPoint number 5 description Top Create a 2 element shell model 4 integration points 5 section points partl odb Part name part 1 embeddedSpace THREE D type DEFORMABLE BODY nodeData 9 49 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE 1 1 0 0 2 2 0 0 3 2 1 0 1 4 1 1 0 1 5 2 1 0 1 6
33. s lt sects s odb SectionAssignment sa sectionAssignmentSegq s odb String sectionName sa sectionName cout lt lt Section lt lt sectionName CStr lt lt endl odb Set set sa region const odb SequenceElement amp elements set elements int size elements size cout lt lt Elements associated with this section lt lt endl for int e 0 e lt size e cout lt lt elements e label lt lt endl 10 10 5 Reading results data The following list describes the objects in results data and the commands you use to read results data As with model data you will find it useful to use the repository iterators to determine the keys of the results data repositories Steps Steps are stored in the steps repository under the Odb object The key to the steps repository is the name of the step The following statements print out the keys of each step in the repository odb StepRepositoryIT stepIter odb steps for stepIter first stepIter isDone stepIter next 10 28 READING FROM AN OUTPUT DATABASE cout lt lt stepIter currentKey CStr lt lt endl The resulting output is Step 1 Step 2 Step 3 Frames Each step contains a sequence of frames where each increment of the analysis or each mode in an eigenvalue analysis that resulted in output to the output database is called a frame The following statement assigns a variable to the last frame in the firs
34. the script writes results at the nodes in the set The following output results are written back to the output database 9 68 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE e POR the acoustic pressure e PORGB the acoustic pressure decibel value If the reference value used is 2 x 10 Pa the PFARdB corresponds to dB SPL e PFAR the acoustic far field pressure e PFARGB the far field pressure decibel value e INTEN FAR the far field acoustic intensity To create the output at each node the script first determines the point at which the node ray intersects the sphere Using the distance from the reference point to the intersection point and the element shape functions the required output variables are calculated at the intersection point After the script has finished writing data it opens the output database containing the new data For comparison the original instance is displayed along with the new instance but results are available only for the new instance However if you chose to write the results back to the original output database the original instance and the new instance along with the original results and the new results can be displayed side by side The script displays any error warning or information messages in the message area You can run the script more than once and continue writing data to the same output database For example you can run the script several times to look at the far field pressure
35. viewer tutorial odb READING FROM AN OUTPUT DATABASE After you open the output database you can access its contents using the methods and members of the Odb object returned by the openOdb method In the above example the Odb object is referred to by the variable odb For a full description of the openOdb command see openOdb Section 33 32 5 of the Abaqus Scripting Reference Manual 9 5 4 Reading model data The following list describes the objects in model data and the commands you use to read model data Many of the objects are repositories and you will find the keys method useful for determining the names of the objects in the repository For more information see Using dictionaries Section 4 6 2 and Repositories Section 5 3 3 The root assembly An output database contains only one root assembly You access the root assembly through the OdbAssembly object myAssembly odb rootAssembly Part instances Part instances are stored in the instances repository under the OdbAssembly object The following statements display the repository keys of the part instances in the tutorial output database for instanceName in odb rootAssembly instances keys print instanceName The output database contains only one part instance and the resulting output is PART 1 1 Regions Regions in the output database are OdbSet objects Regions refer to the part and assembly sets stored in the output database A part set refers to el
36. 4 0 Python provides complex math functions to operate on complex variables You need to import the cmath module to use the complex square root function gt gt gt import cmath gt gt gt y 3 4j gt gt gt print cmath sqrt y 2 1j Remember functions ofa type are called methods data ofa type are called members In our example conjugate is a method of a complex type a real refers to the real member of a complex type Sequences Sequences include strings lists tuples and arrays Sequences are described in Sequences Section 4 5 4 and Sequence operations Section 4 5 5 4 5 3 Determining the type of a variable You use the type function to return the type of the object to which a variable refers gt gt gt a 2 375 gt gt gt type a lt type float gt gt gt gt a 1 gt gt gt type a lt type int gt gt gt gt a chamfer gt gt gt type a lt type string gt 4 5 4 Sequences Sequences are important and powerful data types in Python A sequence is an object containing a series of objects There are three types of built in sequences in Python list tuple and string In addition imported modules allow you to use arrays in your scripts The following table describes the characteristics of list tuple string and array sequences THE BASICS OF PYTHON Type Mutable Homogeneous Methods Syntax list Yes No Yes 9 0 b tuple No No No a 45
37. 794 5891 simulia west support 3ds com West Lafayette IN Tel 1 765 497 1373 simulia central support 3ds com Northville MI Tel 1 248 349 4669 simulia greatlakes info 3ds com Woodbury MN Tel 1 612 424 9044 simulia central support 3ds com Beachwood OH Tel 1 216 378 1070 simulia erie info 3ds com West Chester OH Tel 1 513 275 1430 simulia central support 3ds com Warwick RI Tel 1 401 739 3637 simulia east support 3ds com Lewisville TX Tel 1 972 221 6500 simulia south info 3ds com Richmond VIC Tel 61 3 9421 2900 simulia au support 3ds com Vienna Tel 43 1 22 707 200 simulia at info 3ds com Maarssen The Netherlands Tel 31 346 585 710 simulia benelux support 3ds com Toronto ON Tel 1 416 402 2219 simulia greatlakes info 3ds com Beijing P R China Tel 8610 6536 2288 simulia cn support 3ds com Shanghai P R China Tel 8621 3856 8000 simulia cn support 3ds com Espoo Tel 358 40 902 2973 simulia nordic info 3ds com Velizy Villacoublay Cedex Tel 33 1 61 62 72 72 simulia fr support 3ds com Aachen Tel 49 241 474 01 0 simulia de info 3ds com Munich Tel 49 89 543 48 77 0 simulia de info 3ds com Chennai Tamil Nadu Tel 91 44 43443000 simulia in info 3ds com Lainate MI Tel 39 02 334306150 simulia ity info 3ds com Tokyo Tel 81 3 5442 6300 simulia tokyo support 3ds com Osaka Tel 81 6 7730 2703 simulia osaka support 3ds com Yokohama shi Kanagawa Tel 81 45 470 9381
38. Abaqus Explicit and Abaqus CFD This section describes how you can interact with Abaqus Standard Abaqus Explicit and Abaqus CFD and synchronize your scripts with the analysis job The following topics are covered e Processing messages from Abaqus Standard Abaqus Explicit and Abaqus CFD Section 6 8 1 e Waiting for a job to complete Section 6 8 2 e An example of a callback function Section 6 8 3 6 25 a INTERACTING WITH Abaqus Standard Abaqus Explicit AND Abaqus CFD 6 8 1 Processing messages from Abaqus Standard Abaqus Explicit and Abaqus CFD You can use the addMessageCallback method to associate an event driven function with a particular message that is retrieved from Abaqus Standard Abaqus Explicit or Abaqus CFD When Abaqus CAE retrieves the specific message from Abaqus Standard Abaqus Explicit or Abaqus CFD the function executes and takes the necessary action This type of function is called a callback function The addMessageCallback method specifies which callback function to use for which message The arguments to addMessageCallback are e The name of the job to monitor for messages e The message from Abaqus Standard Abaqus Explicit or Abaqus CFD that causes the callback function to execute e The name of the callback function e An object to pass to the callback function These arguments allow you to associate the callback function with both a particular job and a particular message Alternativel
39. Colors dialog box in which you can view or change the color selections for editing scripts Click Reset Defaults to restore the default colors CAE Command Line Extra Args Enter extra arguments for use when Abaqus CAE is launched from the Abaqus PDE Auto Trace in CAE Automatically trace code in GUI and kernel processes of Abaqus CAE The script will be traced until it returns from the frame in which the trace started The trace will therefore stop when the function returns or the end of the script is reached This option is selected by default 7 2 5 The message area and GUI command line interface The message area and the GUI command line interface share the space at the bottom of the Abaqus PDE similar to the kernel command line interface in Abaqus CAE For more information see Components of the main window Section 2 2 1 of the Abaqus CAE User s Manual The message area is displayed by default It displays messages and warnings as you run scripts in the Abaqus PDE The GUI command line interface is hidden by default but it uses the same space occupied by the message area Click in the bottom left corner of the Abaqus PDE main window to switch from the message area to the GUI command line interface The GUI and kernel processes in Abaqus CAE run separately each using its own Python interpreter You can use the GUI command line interface to type Python commands and to evaluate mathematical expressions using the Python interp
40. GUI SETTINGS def createXYPlot vpOrigin vpName plotName data Display curves of theoretical and computed results in a new viewport nnn from visualization import USER_DEFINED vp session Viewport name vpName origin vpOrigin width 150 height 100 xyPlot session XYPlot plotName chart xyPlot charts values 0 curveList for elemName xyValues in sorted data items xyData session XYData elemName xyValues curve session Curve xyData curveList append curve chart setValues curvesToPlot curveList chart axes1 0 axisData setValues useSystemTitle False title Skew Angle chart axes2 0 axisData setValues useSystemTitle False title plotName vp setValues displayedObject xyPlot Editing display preferences and GUI settings You can use the Abaqus Scripting Interface to edit the abaqus v6 11 gpr file which includes settings that control many default display preferences and GUI settings in the Abaqus CAE user interface To enable editing of this file you must import the caePrefsAccess module This section describes the structure of the abaqus_v6 11 gpr file and provides an overview of customizing its settings for more detailed information about the functions available in the caePrefsAccess module see Chapter 1 Abaqus CAE Display Preferences commands of the Abaqus Scripting Reference Manual WARNING Editing the abaqus_v6 11 gpr file is for experienced users only Do not use the functions in the
41. In contrast the makeCurrent method takes no arguments makeCurrent Some arguments of a command are required and some arguments are optional In the Abaqus Scripting Reference Manual the required arguments are listed first followed by the optional arguments If the argument is optional the default value is provided The default value is the value of an optional argument when you call a method and omit the argument The setValues method is a special case All of the arguments to the setValues method are optional but any argument that you omit retains its current value Abaqus does not assign a default value to the argument Some objects have no constructors Abaqus creates the objects for you For such objects the documentation describes the initial value of an optional argument The initial value given for the argument is the initial value assigned to the corresponding member when Abaqus creates the object For example the defaultViewportAnnotationOptions object has no constructor Abaqus creates the default ViewportAnnotationOptions object when you start a session When you create a new viewport the settings are copied from the current viewport You can use the setValues method to modify the value of a member for example to modify the value of the triad member of the defaultViewportAnnotationsOptions object When you call session defaultViewportAnnotationOptions setValues triad OFF the value of the triad member is set to off The o
42. Manual 5 2 2 Access The description of each object in the Abaqus Scripting Reference Manual begins with a section that describes how you access an instance of the object The import statements are provided for completeness Abaqus CAE imports all modules when you start a session and you do not need to include the import module name statement in your scripts However you must import the Abaqus Scripting Interface Symbolic Constants with the following statement from abaqusConstants import These should be the first statement in all your Abaqus Scripting Interface scripts The following is the access description for the Material object import material mdb models name materials name The first line of the access description indicates the module that Abaqus CAE imported to make this object and its methods and members available to your script The access description also specifies where instances of the object are located in the data model In the previous example the second line indicates how your script can access Material objects from a particular model You must qualify a material object command or member with the variable mdb as described in Functions and modules Section 4 6 5 For example mdb models crash Material steel mdb models crash materials steel Elastic table 30000000 0 0 3 elasticityType mdb models crash materials steel elastic type Similarly if you are reading from an output
43. Python development environment Section 7 2 1 e Managing files in the Abaqus PDE Section 7 2 2 e Editing files in the Abaqus PDE Section 7 2 3 e Selecting the settings for use with a file Section 7 2 4 e The message area and GUI command line interface Section 7 2 5 Abaqus PDE BASICS 7 2 1 Starting the Abaqus Python development environment You can choose from several methods to start the Abaqus Python development environment If you plan to work on scripts that use the Abaqus CAE GUI you should start the Abaqus PDE from within an Abaqus CAE session or start it from the command prompt when you start Abaqus CAE These startup methods link the Abaqus PDE to the corresponding Abaqus CAE session Alternatively you can start the Abaqus PDE independently to save system memory or avoid using an Abaqus license Use one of the following methods to start the Abaqus PDE The first two methods start the Abaqus PDE with a link to an Abaqus CAE session The last method starts the Abaqus PDE independently from Abaqus CAE e In Abaqus CAE select File Abaqus PDE from the main menu bar e From a system command prompt enter abaqus cae pde where abaqus is the command used to start Abaqus Note Using this method starts Abaqus CAE without any local user preference settings Ignoring user preferences allows you to record and run guiLog tests using the consistent default startup settings e From a system command prompt enter
44. SIMULIA SIMULIA is the Dassault Systemes brand that delivers a scalable portfolio of Realistic Simulation solutions including the Abaqus product suite for Unified Finite Element Analysis multiphysics solutions for insight into challenging engineering problems and lifecycle management solutions for managing simulation data processes and intellectual property By building on established technology respected quality and superior customer service SIMULIA makes realistic simulation an integral business practice that improves product performance reduces physical prototypes and drives innovation Headquartered in Providence RI USA with R amp D centers in Providence and in V lizy France SIMULIA provides sales services and support through a global network of regional offices and distributors For more information visit www simulia com About Dassault Systemes As a world leader in 3D and Product Lifecycle Management PLM solutions Dassault Syst mes brings value to more than 100 000 customers in 80 countries A pioneer in the 3D software market since 1981 Dassault Systemes develops and markets PLM application software and services that support industrial processes and provide a 3D vision of the entire lifecycle of products from conception to maintenance to recycling The Dassault Systemes portfolio consists of CATIA for designing the virtual product SolidWorks for 3D mechanical design DELMIA for virtual production SIMULIA for virtual
45. SequenceNode amp nodeList nodeSet nodes surface information odb Set amp surface instance surfaces IMPACTOR const odb SequenceElement amp elementList surface elements const odb SequenceElementFace amp faces surface faces iterators are used to get all sets odb SetRepository amp elementSetRepository instance elementSets odb SetRepositoryIT elSetRepIter elementSetRepository for elSetRepIter first elSetRepIter isDone elSetRepIter next odb Set amp set elementSetRepository elSetRepIter currentKey cout lt lt element set lt lt elSetRepIter currentKey CStr lt lt endl cout lt lt number of elements cout lt lt set size lt lt endl The set information in an assembly set is keyed by instance name and can be accessed using the following assembly surface information odb Set amp aSurface rootAssy surfaces TARGET odb SequenceString instanceNames aSurface instanceNames int totalNames instanceNames size for int name 0 name lt totalNames name const odb String amp iName instanceNames name const odb SequenceElement amp els aSurface elements iName const odb SequenceElementFace amp face aSurface faces iName 10 24 READING FROM AN OUTPUT DATABASE Materials Materials are stored in the materials repository under the Odb object Extend the Material commands available to the Odb obj
46. The same command provides the name of the new object Methods that create a copy of an object are called copy constructors Although copy constructors exist for most objects in most cases they are not documented in the Abaqus Scripting Reference Manual The format of a copy constructor is ObjectName name name objectToCopy objectToBeCopied A copy constructor returns an object of the type of objectToBeCopied with the given name For example the following statements show you can create a Part object and then use a copy constructor to create a second Part object that is a copy of the first firstBolt mdb models Metric Part name boltPattern dimensionality THREE D type DEFORMABLE BODY secondBolt mdb models Metric Part name newBoltPattern objectToCopy firstBolt You can also use the copy constructor to create a new object in a different model firstBolt mdb models Metric Part name boltPattern dimensionality THREE D type DEFORMABLE BODY secondBolt mdb models SAE Part name boltPattern objectToCopy firstBolt 5 COPYING AND DELETING Abaqus SCRIPTING INTERFACE OBJECTS 6 2 2 More on copying objects To create a copy of an object some objects use the base type described in Abstract base type Section 6 1 5 For example to copy a HomogeneousSolidSection object you use the abstract base type Section constructor import material import section impactModel mdb Model name Model
47. Using the Abaqus PDE with custom applications Custom applications are scripts created to modify or add functionality to Abaqus CAE They typically use a combination of the Abaqus Scripting Interface commands and the Abaqus GUI toolkit commands to extend the user interface and the underlying kernel commands Custom applications are launched concurrent with the start of an Abaqus CAE session and they are integrated into the existing functionality If the application contains both kernel and GUI functions you must trace them separately Tracing the kernel and GUI functions separately prevents problems that can occur in Abaqus CAE as the Abaqus PDE attempts to switch between kernel and GUI modes while the code is running Separating the functions also provides a logical approach to locating problems in the kernel code versus ones in the GUI code USING THE Abaqus PDE To trace the execution of custom application startup code 1 Enter the following at a command prompt to start the Abaqus PDE and the custom application abaqus pde pde args where abaqus is the command you use to start Abaqus and args are the arguments required to start the custom application For example if you enter abaqus cae custom xxx py to start Abaqus CAE and your application enter abaqus pde pde custom xxx py Note You cannot start the custom application and launch the Abaqus PDE from within Abaqus CAE since the initial startup processes would already be complete
48. Waiting for a job to complete You can use the Job object s waitForCompletion method to synchronize your script with a job that has been submitted If you call the waitForCompletion method after you submit a job the script waits until the analysis is complete before continuing When the script continues you should check the status of the job to ensure that the job completed successfully and did not abort For example the script described in Reproducing the cantilever beam tutorial Section 8 1 uses waitForCompletion to ensure that the analysis job has finished executing successfully before the script opens the resulting output database and displays a contour plot of the results You can use an optional timeOut argument with the waitForCompletion method The timeOut argument specifies the time in seconds that the script should wait for the job to complete until the script continues If the job has not completed before the interval specified by the timeOut argument the 6 29 a INTERACTING WITH Abaqus Standard Abaqus Explicit AND Abaqus CFD waitForCompletion method throws an AbaqusException exception You must include a try statement to catch the exception thrown by a time out myJob1 submit try myJob1 waitForCompletion 6000 except AbaqusException message print Job timed out message If you do not provide a timeOut argument the script will wait indefinitely for the job to complete In the following example the scr
49. Writing your own modules Section 4 6 6 4 6 1 Creating functions You can define your own functions in Python A function is like a subroutine in FORTRAN You can pass arguments into a function it performs the operation and it can return one or more values For example the following function returns the distance of a point from the origin The def statement starts a function definition PROGRAMMING TECHNIQUES def distance x y a x 2 y 2 return a 0 5 You supply the arguments to a function in parentheses for example gt gt gt distance 4 7 9 1 10 2420701033 You can assign the return value to a variable gt gt gt d distance 4 7 9 1 gt gt gt print d 10 2420701033 One of the methods provided by Abaqus uses as many as 50 arguments Some of the arguments are required by the method others are optional and Abaqus provides an initial or default value Fortunately you can call a function or a method without providing every optional argument if you use Python s keyword arguments A keyword specifies the argument that you are providing Keyword arguments also make your scripts more readable For example the following defines a function called calculateCylinderVolume gt gt gt from math import gt gt gt def calculateCylinderVolume radius height anes volume pi radius 2 height Sas return volume You can call the function with the following line gt gt gt volume calculat
50. a sequence READING FROM AN OUTPUT DATABASE displacementl framel fieldOutputs U displacement2 frame2 fieldOutputs U These statements assign the displacement field output in the last frame of the first and second steps to the variables displacement1 and displacement2 stressl stress2 framel fieldOutputs S frame2 fieldOutputs S Similarly these statements assign the stress field output in the last frame of the first and second steps to the variables stress1 and stress2 deltaDisplacement displacement2 displacement1 This statement subtracts the displacement field output from the last frame of the two steps and puts the resulting field output into a new variable deltaDisplacement deltaStress stress2 stressl Similarly this statement subtracts the stress field output and puts the result in the variable deltaStress myViewport odbDisplay setDeformedVariable deltaDisplacement This statement uses deltaDisplacement the displacement field output variable that we created earlier to set the deformed variable This is the variable that Abaqus will use to display the shape of the deformed model myViewport odbDisplay setPrimaryVariable field deltaStress outputPosition INTEGRATION POINT refinement INVARIANT Mises This statement uses deltaStress our stress field output variable to set the primary variable This is the variable that Abaqus will display in a contour or symbol plot myViewport o
51. addition the output database must contain results for the following output variables e INEN the acoustic infinite element normal vector e INFR the acoustic infinite element radius used in the coordinate map for these elements 9 67 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE e PINF the acoustic infinite element pressure coefficients Use the following command to retrieve the script abaqus fetch job acousticVisualization Enter the Visualization module and display the output database in the current viewport Run the script by selecting File Run Script from the main menu bar The script uses get Inputs to display a dialog box that prompts you for the following information e The name of the element set containing the infinite elements the name is case sensitive By default the script locates all the infinite elements in the model and uses them to create the spherical surface If the script cannot find the specified element set in the output database it displays a list of the available element sets in the message area e The radius of the sphere required The script asks you to enter a new value if the sphere with this radius does not intersect any of the selected infinite elements e The coordinates of the center of the sphere By default the script uses 0 0 0 e The analysis steps You can enter one of the following An Int A comma separated list of Ints A range for example 1 20 You
52. also use region commands to create surfaces For example An ElementSet on an instance odb SequenceInt eLabelsA 2 eLabelsA append 9 eLabelsA append 99 instanceA ElementSet elSetA eLabelsA A NodeSet on the rootAssembly odb SequenceSequenceInt nodeLabelsRA odb SequenceString namesRA namesRA append part 1 1 odb SequenceInt nodeLabelsRA A nodeLabelsRA A append 5 nodeLabelsRA A append 11 nodeLabelsRA append nodeLabelsRA A const odb Set amp nSetRA rootAssy NodeSet nodeSetRA namesRA nodeLabelsRA Materials You use the Material object to list material properties Material objects are members of the Odb object Materials are stored in the materials repository under the Odb object Extend the Material commands available to the Odb object using the following statement odb MaterialApi materialApi odb extendApi odb Enum odb MATERIAL materialApi 10 43 WRITING TO AN OUTPUT DATABASE To create an isotropic elastic material with a Young s modulus of 12000 0 and an effective Poisson s ratio of 0 3 in the output database odb String materialName Elastic Material odb Material amp material materialApi Material materialName odb SequenceSequenceFloat myTable odb SequenceFloat myData myData append 12000 0 myData append 0 3 myTable append myData odb String type ISOTROPIC mMaterial Elastic myTable type For more information see Cha
53. and part are called Python modules The next statement in the script is shown in Figure 3 2 You can read this statement from right to left as follows 1 Create a new model named Model A 2 Store the new model in the model database mdb 3 Assign the new model to a variable called myModel 3 Assign a variable 1 Create a new model to the new model named Model A N myModel mdb Model name Model A 2 Store the new model in the model database mdb Figure 3 2 Creating a new model mySketch myModel ConstrainedSketch name Sketch A sheetSize 200 0 This statement creates a new sketch object named Sketch Ain myModel The variable mySketch is assigned to the new sketch The sketch will be placed on a sheet 200 units square Note the following e A command that creates something an object in object oriented programming terms is called a constructor and starts with an uppercase character You have seen the Model and Sketch commands that create Model objects and Sketch objects respectively e The command uses the variable myModel that we created in the previous statement Using variables with meaningful names in a script makes the script easier to read and understand xyCoordsInner 5 20 5 20 15 0 15 0 5 20 xyCoordsOuter 10 30 10 30 40 30 CREATING A PART 30 30 20 10 20 10 30 30 40 30 10 30 These two statements define the X and Y
54. area and the script stops executing The following topics are covered e Standard Python exceptions Section 5 5 1 e Standard Abaqus Scripting Interface exceptions Section 5 5 2 e Additional Abaqus Scripting Interface exceptions Section 5 5 3 e Exception handling Section 5 5 4 5 5 1 Standard Python exceptions Python exceptions arise from either system related problems such as a disk or network error or from programming errors such as numeric overflow or reference to an index that does not exist Standard Python exceptions are not described in this manual and are not listed as possible exceptions in the Abaqus Scripting Reference Manual Look at the standard Python documentation on the official Python web site www python org for a list of standard Python exceptions Standard exceptions are described in the Built in Exceptions section of the Python Library Reference 5 5 2 Standard Abaqus Scripting Interface exceptions Standard Abaqus Scripting Interface exceptions arise from errors in a script that relate to Abaqus CAE The standard Abaqus Scripting Interface exceptions that can be raised by a method are listed with each command in the Abaqus Scripting Reference Manual The standard Abaqus Scripting Interface exception types are listed below 5 ERROR HANDLING IN THE Abaqus SCRIPTING INTERFACE InvalidNameError You specified an invalid name Abaqus CAE enforces a naming convention for objects that you c
55. at zero gt gt gt myList 1 2 5 Python has built in methods that allow you to operate on the items in a sequence gt gt gt myList 1 9 3 gt gt gt myList append 33 gt gt gt myList 1 9 3 33 gt gt gt myList remove 9 gt gt gt myList 1 3 33 The following are some additional built in methods that operate on lists count Return the number of times a value appears in the list gt gt gt myList 0 1 2 1 2 3 2 3 4 3 4 5 gt gt gt myList count 2 3 index Return the index indicating the first time an item appears in the list gt gt gt myList index 5 11 gt gt gt myList index 4 8 insert Insert a new element into a list at a specified location gt gt gt myList insert 2 22 gt gt gt myList 0 1 22 2 1 2 3 2 3 4 3 4 5 THE BASICS OF PYTHON reverse Reverse the elements in a list gt gt gt myList reverse gt gt gt myList 5 4 3 4 3 2 3 2 1 2 22 1 0 sort Sort the elements in a list gt gt gt myList sort gt gt gt myList 0 1 1 2 2 2 3 3 3 4 4 5 22 Tuple Tuples are very similar to lists however they are immutable heterogeneous sequences which means that you cannot change them after you create them You can think of a tuple as a list that cannot be modified Tuples have no methods you cannot append items to a tuple and you cannot modify or delete the items in a tuple The followi
56. caePrefsAccess module unless you are comfortable with the Abaqus Scripting Interface and understand the structure of the abaqus_v6 11 gpr file In addition you should not have Abaqus CAE running when you make changes to the graphical preferences file You can retrieve the location of your abaqus v6 11 gpr file using the getGuiPrefsFileName function The file records default settings in two sections display options reside in the sessionOptions section and GUI settings reside in the guiPreferences section Editing the options in one section does not have any effect on the options in the other section 8 21 5 EDITING DISPLAY PREFERENCES AND GUI SETTINGS sessionOptions The session options consist of the settings that you can save using the File Save Display Options menu option In Abaqus CAE you can save these options in the current directory or in your home directory You can display and edit session options using the openSessionOptions function gt abaqus Python gt gt gt import caePrefsAccess gt gt gt sessionOptions caePrefsAccess openSessionOptions gt gt gt printValuesList sessionOptions sessionOptions session animationController animationOptions frameCounter type bool True sessionOptions session animationController animationOptions frameRate type int 100 sessionOptions session aviOptions compressionMethod type SymbolicConstant CODEC sessionOptions session aviOptions
57. can also enter a combination of Ints and ranges for example 4 5 10 20 30 By default the script reads data from all the steps The script ignores any steps that do not perform a direct solution steady state dynamics acoustics analysis or that have no results e The frequencies for which output should be generated Hz You can enter a Float a list of Floats or arange By default the script generates output for all the frequencies in the original output database e A decibel reference value required e The name of the part instance to create required The script appends this name to the name of the instance containing the infinite elements being used e The speed of sound required e The fluid density required e Whether to write data to the original output database By default the script writes to an output database called current odb name_acvis odb After the get Inputs method returns acceptable values the script processes the elements in the specified element sets The visualization sphere is then determined using the specified radius and center For each element in the infinite element sets the script creates a corresponding membrane element such that the new element is a projection of the old element onto the surface of the sphere The projection uses the infinite element reference point and the internally calculated infinite direction normal INFN at each node of the element Once the new display elements have been created
58. case to odb lcNew step LoadCase name l1cName newFrame step Frame loadCase l1cNew newFrame FieldOutput field newStress name S newFrame FieldOutput name U field newDisp odb save odb close 9 10 8 Stress range for multiple load cases This example illustrates how you can use the envelope operations to compute the stress range over a number of load cases The example script does the following e For each load case during a specified step the script collects the S11 components of the stress tensor fields into a list of scalar fields e Computes the maximum and minimum of the S11 stress component using the envelope calculations e Computes the stress range using the maximum and minimum values of the stress component e Creates a new frame in the step e Writes the computed stress range into a new FieldOutput object in the new frame Use the following command to retrieve the example script abaqus fetch job stressRange The fetch command also retrieves an input file that you can use to generate an output database that can be read by the example script from odbAccess import retrieve request from user odbName raw_input Enter odb name stepName raw_input Enter step name 9 62 9 10 9 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE retrieve steps from the odb odb openOdb odbName step odb steps stepName sFields for loadCase in step loadCases values stressField st
59. compressionQuality type int 75 The following statement changes the frame rate to 50 You should confirm that the data type you specify matches the type of the existing value gt gt gt sessionOptions session animationController animationOptions frameRate 50 You can save the options you change to the original file by issuing the following command gt gt gt sessionOptions save guiPreferences The GUI preferences control many default behaviors in the Abaqus CAE graphical interface including size and location of the main window size and location of the dialog boxes within Abaqus CAE and the number of recent files listed in the Start Session dialog box and in the File menu Abaqus CAE saves guiPreferences settings to your home directory when you exit the application A separate guiPreferences record is stored in the preferences file for each display you use so you must specify the displayName you want to modify when you open the guiPreferences settings You can obtain a list of the available displayName settings by calling the getDisplayNamesInGuiPreferences function and you can edit these settings by using the openGuiPreferences function and specifying the displayName of the settings that you want to modify In the following example the openGuiPreferences function is used to examine the X and Y location and the height and width of the following components of Abaqus CAE 8 22 EDITING DISPLAY PREFERENCES AND G
60. coordinates of the vertices that form the inner and outer profile of the letter A The variable xyCoordsInner refers to the vertices of the inner profile and the variable xyCoordsOuter refers to the vertices of the outer profile for i in range len xyCoordsInner 1 mySketch Line pointl xyCoordsInner il point2 xyCoordsInner i 1 This loop creates the inner profile of the letter A in mySketch Four lines are created using the X and Y coordinates of the vertices in xyCoordsInner to define the beginning point and the end point of each line Note the following e Python uses only indentation to signify the start and the end of a loop Python does not use the brackets of C and C e The len function returns the number of coordinate pairs in xyCoordsInner five in our example e The range function returns a sequence of integers In Python as in C and C the index of an array starts at zero In our example range 4 returns 0 1 2 3 For each iteration of the loop in the example the variable i is assigned to the next value in the sequence of integers Similarly a second loop creates the outer profile of the A character myPart myModel Part name Part A dimensionality THREE D type DEFORMABLE BODY This statement creates a three dimensional deformable part named Part AinmyModel The new part is assigned to the variable myPart myPart BaseSolidExtrude sketch mySketch depth 20 0 This statement cre
61. crash test fender txt r gt gt gt myOutputFile open peak deflection txt w The first line opens an existing file in the crash_test directory called fender txt The file is opened in read only mode myInputFile is a variable that refers to a file object The second line creates and opens a new file object in the local directory called peak_deflection txt This file is opened in read and write mode Use the methods ___ technique that we saw earlier to see the methods of a file object gt gt gt myOutputFile open peak deflection txt w gt gt gt myOutputFile methods _ close fileno flush isatty read readinto readline readlines seek tell truncate write writelines The readline method reads a single line from a file into a string including the new line character that terminates the string The readlines method reads all the lines in a file into a list The write function writes a string to a file Look at the standard Python documentation on the official Python web site www python org for a description of functions that operate on files File objects are described in the Built in Types section of the Python Library Reference The following example reads each line of a text file and changes the line to uppercase characters Read only is the default access mode gt gt gt inputFile open foam txt You must declare write access gt gt gt outputFile
62. dictionary through its key which can be a string an integer or any type of immutable Python object There is no implicit order to the keys in a dictionary In most cases you will assign a string to the dictionary key The key then becomes a more intuitive way to access the elements in a dictionary You use square brackets and the dictionary key to access a particular object For example gt gt gt myPart Create an empty dictionary gt gt gt myPart size 3 0 gt gt gt myPart material Steel gt gt gt myPart color Red gt gt gt myPart number 667 You can add dictionary keys at any time gt gt gt myPart weight 376 0 gt gt gt myPart cost 10 34 You use the key to access an item in a dictionary gt gt gt costOverWeight myPart cost myPart weight gt gt gt costOverWeight 0 0275 gt gt gt description myPart color myPart material gt gt gt description RedSteel Dictionaries are not sequences and you cannot apply sequence methods such as slicing and concatenating to dictionaries Dictionaries have their own methods The following statement lists the methods of the dictionary myPart 4 22 PROGRAMMING TECHNIQUES gt gt gt myPart methods _ clear copy get has_key items keys update values The keys method returns a list of the dictionary keys gt gt gt myPart keys size weight number materia
63. e The section point number option 1 only e The element number or element set name 9 71 a EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE Before executing the script run an analysis that creates an output database file containing the appropriate output This analysis includes for example output for the elements and the integration point coordinates of the elements Execute the script using the following command abaqus python felbow py lt filename odb gt The script prompts for other information such as the desired postprocessing option part name etc The script processes the data and produces a text file or a new output database that contains the information required to visualize the elbow element results Elastic plastic collapse of a thin walled elbow under in plane bending and internal pressure Section 1 1 2 of the Abaqus Example Problems Manual contains several figures that can be created with the aid of this program 9 72 10 WHAT DO YOU NEED TO ACCESS THE OUTPUT DATABASE Using C to access an output database The following sections describe the architecture of an output database and how to use the Abaqus C Application Programming Interface API to access data from an output database The following topics are covered 10 1 Overview Section 10 1 What do you need to access the output database Section 10 2 Abaqus Scripting Interface documentation style Section 10 3
64. e The sys module to retrieve the command line arguments e The math module to calculate the square root import sys math def distance x y nnn Prints distance from origin to x y Takes two command line arguments x and y nunn Square the arguments and add them a x 2 y 2 Return the square root return math sqrt a Retrieve the command line arguments and convert the strings to floating point numbers Ea 1 float sys argv 1 float sys argv 2 lt 1 Call the distance function d distance x y Print the result print Distance to origin d To use this script do the following e Copy the statements into a file called distance py in your local directory e Type the following at the system prompt 4 21 Oo PROGRAMMING TECHNIQUES abaqus python distance py 30 40 Abaqus executes the script and prints the result Distance to origin 50 0 4 6 2 Using dictionaries Dictionaries are a powerful tool in Python A dictionary maps a variable to a set of data much like a real dictionary maps a word to its definition its pronunciation and its synonyms Dictionaries are similar to lists in that they are not homogeneous and can contain objects of any type To access an object in a list you provide the integer index that specifies the position of the object in the list For example gt gt gt myList 6 2 9 gt gt gt myList 1 2 In contrast you access an object in a
65. full description of the FieldOutput constructor see FieldOutput Section 60 7 1 of the Abaqus Scripting Reference Manual The type argument to the FieldOutput constructor describes the type of the data tensor vector or scalar The properties of the different tensor types are Full tensor A tensor that has six components and three principal values Full three dimensional rotation of the tensor is possible Three dimensional surface tensor A tensor that has only three in plane components and two principal values Full three dimensional rotation of the tensor components is possible Three dimensional planar tensor A tensor that has three in plane components one out of plane component and three principal values Full three dimensional rotation of the tensor components is possible Two dimensional surface tensor A tensor that has only three in plane components and two principal values Only in plane rotation of the tensor components is possible Two dimensional planar tensor A tensor that has three in plane components one out of plane component and three principal values Only in plane rotation of the tensor components is possible The valid components and invariants for the different data types are given in Table 10 1 Table 10 1 Valid components and invariants for Abaqus data types Data type Components Invariants SCALAR VECTOR 1 2 3 MAGNITUDE TENSOR_3D_FULL 11 22 33 12 13 23 MISES TRESCA PR
66. generated by the input file from Case 2 of the example problem Indentation of an elastomeric foam specimen with a hemispherical punch Section 1 1 4 of the Abaqus Example Problems Manual The problem studies the behavior of a soft elastomeric foam block indented by a heavy metal punch The tutorial shows how you can use the Visualization module to view the data in the output database The tutorial describes how you can choose the variable to display how you can step through the steps and frames in the analysis and how you can create X Y data from history output You are encouraged to copy the tutorial output database to a local directory and experiment with the Abaqus C API The output database and the example scripts from this manual can be copied to the user s working directory using the abaqus fetch utility abaqus fetch job name where name C is the name of the program or name odb is the name of the output database see Fetching sample input files Section 3 2 13 of the Abaqus Analysis User s Manual For example use the following command to retrieve the tutorial output database abaqus fetch job viewer tutorial 10 19 a READING FROM AN OUTPUT DATABASE 10 10 2 Making the Odb commands available To make the Odb commands available to your program you first need to include the output database interface classes using the following statement include lt odb_API h gt To make the material and section Odb command
67. i gt gt gt You can enter Python statements at the gt gt gt prompt To see the value of a variable or expression type the variable name or expression at the Python prompt To exit the Python interpreter type Ctrl D on UNIX systems or Ctrl Z Enter on Windows systems You can also use Python to run a script directly by typing abaqus python scriptname py at the system prompt Abaqus will run the script through the Python interpreter and return you to the system prompt For an example of running a Python script using Abaqus see Creating functions Section 4 6 1 e You can also use the Python interpreter provided in the command line interface by Abaqus CAE The command line is at the bottom of the Abaqus CAE window and is shared with the message area Abaqus CAE displays the Python gt gt gt prompt in the command line interface 4 in the lower left corner of the main window to display the command line interface You may want to drag the handle at the top of the command line interface to increase the number of lines displayed OBJECT ORIENTED BASICS x Select a plane forthe solid extrusion 2 J gt gt gt a 3 gt gt gt b ay gt gt gt c ath gt gt gt c 10 gt gt gt If Abaqus CAE displays new messages while you are using the command line interface the message area tab turns red 4 4 Object oriented basics You need to understand some of the fundamentals of o
68. imaginary portion of a complex result The FieldOutput operations are significantly more efficient than the Field Value operators You can save the computed FieldOutput objects with the following procedure e Create a new FieldOutput object in the output database e Use the addData method to add the new computed field objects to the new FieldOutput object For example Get fields from odb odb StepRepository amp stepCon odb steps odb SequenceFrame amp frameConl stepCon Step 1 frames odb FieldOutputRepository amp fieldConl frameConl get 1 fieldOutputs odb SequenceFrame amp frameCon2 stepCon Step 2 frames odb FieldOutputRepository amp fieldCon2 frameCon2 get 1 fieldOutputs odb FieldOutput amp fieldl fieldCon1 U odb FieldOutput amp field2 fieldCon2 U Compute new field odb FieldOutput deltaDisp field2 field1 Save new field odb Step amp newStep odb Step user user defined results odb Enum TIME 1 0 odb Frame newFrame newStep Frame 0 0 0 odb FieldOutput amp newField newFrame FieldOutput U delta displacements odb Enum VECTOR newField addData deltaDisp 10 53 5 COMPUTATIONS WITH Abaqus RESULTS 10 13 2 Valid mathematical operations Table 10 2 describes the abbreviations that are used in mathematical operations Table 10 2 Abbreviations Abbreviation Allowable values all FieldOutput objects Fie
69. import 8 19 INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS import visualization from miscUtils import sorted iD esos SES Seen esos E Sek oben av ebe saws def getResults Retrieve the displacement and calculate the minimum and maximum bending moment at the center of plate non from visualization import ELEMENT NODAL Open the output database odb visualization openOdb skew odb centerNSet odb rootAssembly nodeSets CENTER frame odb steps Step 1 frames 1 Retrieve Z displacement at the center of the plate dispField frame fieldOutputs U dispSubField dispField getSubset region centerNSet disp dispSubField values 0 data 2 Average the contribution from each element to the moment then calculate the minimum and maximum bending moment at the center of the plate using Mohr s circle momentField frame fieldOutputs SM momentSubField momentField getSubset region centerNSet position ELEMENT NODAL ml m2 m3 0 0 0 for value in momentSubField values ml ml value data 0 m2 m2 value data 1 m3 m3 value data 2 numElements len momentSubField values ml ml numElements m2 m2 numElements m3 m3 numElements momentA 0 5 abs m1 abs m2 momentB sqrt 0 25 ml m2 2 m3 2 maxMoment momentA momentB minMoment momentA momentB odb close return disp maxMoment minMoment 8 20 EDITING DISPLAY PREFERENCES AND
70. import mesh Assign an element type to the part instance region myInstance cells elemType mesh ElemType elemCode C3D8I elemLibrary STANDARD myAssembly setElementType regions region elemTypes elemType Seed the part instance myAssembly seedPartInstance regions myInstance size 10 0 Mesh the part instance myAssembly generateMesh regions myInstance Display the meshed beam myViewport assemblyDisplay setValues mesh ON myViewport assemblyDisplay meshOptions setValues meshTechnique ON myViewport setValues displayedObject myAssemb1ly GENERATING A CUSTOMIZED PLOT import job Create an analysis job for the model and submit it jobName beam tutorial myJob mdb Job name jobName model Beam description Cantilever beam tutorial Wait for the job to complete myJob submit myJob waitForCompletion import visualization Open the output database and display a default contour plot myOdb visualization openOdb path jobName odb myViewport setValues displayedObject myOdb myViewport odbDisplay display setValues plotState CONTOURS ON DEF myViewport odbDisplay commonOptions setValues renderStyle FILLED 8 2 Generating a customized plot The following section provides examples of Abaqus Scripting Interface scripts that open an output database and generate a customized plot In effect these scripts reproduce the functionality of the Visualization module in Ab
71. imports all of the names from the math module The second line uses pi a float number defined in the math module The third line refers to a sin function Python can use the sin function because you imported it from the math module To import only the sin function you could have typed gt gt gt from math import sin You need to import a module only once during a session Once a module is imported its functions methods and attributes are always available to you You cannot unload a module after you import it To see a list of all the functions that come with the math module look at the Miscellaneous Services section of the Python Library Reference You can download public domain modules and you can create your own modules Python provides a second approach to importing modules For example gt gt gt import math gt gt gt X 22 0 7 0 4 0 gt gt gt math sin x 0 707330278085 The import approach shown above imports the module as a unit and you must qualify the name of an object from the module To access a function from the math module in our example you must prepend the function with math the math statement is said to qualify the sin function What is the difference between the two approaches to importing modules If two modules contain an object with the same name Python cannot distinguish between the objects if you use the from modulename import approach If two objects have the s
72. in more detail in Model data Section 10 5 1 10 6 OBJECT MODEL FOR THE OUTPUT DATABASE Results data Results data describe the results of your analysis for example stresses strains and displacements You use output requests to configure the contents of the results data Results data can be either field output data or history output data for a more detailed explanation see Results data Section 10 5 2 Note For a description of object models see An overview of the Abaqus object model Section 6 1 1 You can find more information on the format of the output database in Output to the output database Section 4 1 3 of the Abaqus Analysis User s Manual 10 5 1 Model data Model data define the model used in the analysis for example the parts materials initial and boundary conditions and physical constants More information about model data can be found in The Abaqus object model Section 6 1 and Defining an assembly Section 2 10 1 of the Abaqus Analysis User s Manual Abaqus does not write all the model data to the output database for example you cannot access loads and only certain interactions are available Model data that are stored in the output database include parts the root assembly part instances regions materials sections section assignments and section categories each of which is stored as an Abaqus C API object These components of model data are described below
73. in the output database The tutorial describes how you can choose the variable to display how you can step through the steps and frames in the analysis and how you can create X Y data from history output You are encouraged to copy the tutorial output database to a local directory and experiment with the Abaqus Scripting Interface The output database and the example scripts from this manual can be copied to the user s working directory using the abaqus fetch utility abaqus fetch job name where name py is the name of the script or name odb is the name of the output database see Fetching sample input files Section 3 2 13 of the Abaqus Analysis User s Manual For example use the following command to retrieve the tutorial output database abaqus fetch job viewer tutorial 9 5 2 Making the Odb commands available To make the Odb commands available to your script you first need to import the odbAccess module using the following statements from odbAccess import from abaqusConstants import To make the material and section Odb commands available to your script you also need to import the relevant module using the following statements from odbMaterial import from odbSection import 9 5 3 Opening an output database You use the openOdb method to open an existing output database For example the following statement opens the output database used by the Abaqus CAE Visualization module tutorial odb openOdb path
74. keys are mdb customData blocks keys 5 19 a EXTENDING THE Abaqus SCRIPTING INTERFACE print mdb customData blocks has_key Block 2 print mdb customData blocks has_key Block 3 mdb customData blocks changeKey Block 1 Block 11 print The modified repository keys are mdb customData blocks keys print The name member is mdb customData blocks Block 11 name print The repository size is len mdb customData blocks The resulting output is The original repository keys are Block 1 Block 2 1 0 The modified repository keys are Block 11 Block 2 The name member is Block 11 The repository size is 2 5 6 6 RepositorySupport You can use the RepositorySupport class to derive a class that can contain one or more repositories However if you do not intend to create a repository as an attribute of your class you should derive your class from CommandRegister not from RepositorySupport Using the RepositorySupport class allows you to create a hierarchy of repositories for example in the Abaqus Scripting Interface the parts repository is a child of the models repository The first argument passed into your constructor is stored as name it is created automatically by the infrastructure To create a hierarchy of repositories derive your class from RepositorySupport and use its Repository method to create child repositories as shown below The Repository method is described in Repositories
75. local coordinate system if it is available Otherwise the global system is used Abaqus assumes that the local coordinate systems are consistent for operations involving more than one tensor e Operations between Field Value objects associated with different locations in the model are allowed only if the data types are the same If the locations in the model differ the FieldValue computed will not be associated with a location If the local coordinate systems of the FieldValue objects are not the same the local coordinate systems of both fieldValues will be disregarded and the fieldValue computed will have no local coordinate system e The operations will not be performed on the conjugate data the imaginary portion of a complex result The FieldOutput operations are significantly more efficient than the Field Value operators You can save the computed FieldOutput objects with the following procedure see the example Computations with FieldOutput objects Section 9 10 4 e Create a new FieldOutput object in the output database e Use the addData method to add the new computed field objects to the new FieldOutput object 9 8 2 Valid mathematical operations Table 9 2 describes the abbreviations that are used in mathematical operations Table 9 2 Abbreviations Abbreviation Allowable values all FieldOutput objects FieldValue objects History Variable objects or floating point numbers float floating point numbe
76. lt S for int k 0 k lt dSize k cout lt lt data k lt lt cout lt lt endl The resulting output is Element label 1 Integration Point 1 S 0 01230 0 05658 0 00892 0 00015 Element label 1 Integration Point 2 S 0 01313 0 05659 0 00892 0 00106 Element label 1 Integration Point 3 S 0 00619 0 05642 0 00892 0 00023 Element label 1 Integration Point 4 S 0 00697 0 05642 0 00892 0 00108 Element label 11 Integration Point 1 S 0 01281 0 05660 0 00897 0 00146 Element label 11 Integration Point 2 S 0 01183 0 05651 0 00897 0 00257 Element label 11 Integration Point 3 Possible values for the enumeration for the position are INTEGRATION POINT NODAL ELEMENT NODAL CENTROID 10 35 a READING FROM AN OUTPUT DATABASE If the requested field values are not found in the output database at the specified odb_Enum ELEMENT_NODAL or odb_Enum CENTROID positions they are extrapolated from the field data at the odb_Enum INTEGRATION_POINT position 10 10 9 Reading history output data History output is output defined for a single point or for values calculated for a portion of the model as a whole such as energy Depending on the type of output expected the historyRegions repository contains data from one of the following e anode e an integration point e aregion e a material point Note History data from an analysis cannot contain multiple points
77. methods of the Part object to add nodes and elements respectively Similarly you use the addData method of the FieldOutput object to add field output data to the output database After creating an output database you should use the save method on the Odb object to save the output database The example script in Creating an output database Section 9 10 2 also illustrates how you can write to an output database The following topics are covered e Creating a new output database Section 9 6 1 e Writing model data Section 9 6 2 e Writing results data Section 9 6 3 e Writing field output data Section 9 6 4 e Default display properties Section 9 6 5 e Writing history output data Section 9 6 6 9 26 WRITING TO AN OUTPUT DATABASE 9 6 1 Creating a new output database You use the Odb constructor to create a new empty Odb object odb Odb name myData analysisTitle derived data description test problem path testWrite odb For a full description of the Odb command see Odb object Section 33 1 of the Abaqus Scripting Reference Manual Abaqus creates the RootAssembly object when you create or open an output database You use the save method to save the output database odb save For a full description of the save command see save Section 33 1 4 of the Abaqus Scripting Reference Manual 9 6 2 Writing model data To define the geometry of your model you f
78. module Abaqus CAE imported to make the object available and how you can access the object from a command After Abaqus CAE imports a module all the objects associated with the module become available to you In addition all the methods and members associated with each object are also available The following table describes the relationship between some of the modules in the Abaqus Scripting Interface and the functionality of the modules and toolsets found in Abaqus CAE Module Abaqus CAE functionality assembly The Assembly module datum The Datum toolset interaction The Interaction module job The Job module load The Load module material Materials in the Property module mesh The Mesh module part The Part module partition The Partition toolset section Sections in the Property module sketch The Sketch module COPYING AND DELETING Abaqus SCRIPTING INTERFACE OBJECTS Module Abaqus CAE functionality step The Step module visualization The Visualization module xyPlot The X Y toolset 6 2 Copying and deleting Abaqus Scripting Interface objects The following section describes how you copy and delete Abaqus Scripting Interface objects The following topics are covered e Creating a copy of an object Section 6 2 1 e More on copying objects Section 6 2 2 e Deleting objects Section 6 2 3 6 2 1 Creating a copy of an object Most Abaqus objects have a method that creates a copy of the object
79. odb SectionContainer amp sectionContainer sectionApi sections odb SectionContainerIT scIT sectionContainer for scIT first scIT isDone scIT next cout lt lt Section Name lt lt scIT currentKey CStr lt lt endl 10 26 READING FROM AN OUTPUT DATABASE The Section object can be one of the various section types The odb_isA method can be used to determine the section type For example to determine whether a section is of type homogeneous solid section and to print it s thickness and associated material name for scIT first scIT isDone scIT next const odb Section amp mySection scIT currentValue if odb isA odb HomogeneousSolidSection mySection odb HomogeneousSolidSection homogeneousSolidSection odb dynamicCast odb HomogeneousSolidSection mySection odb String material homogeneousSolidSection material cout lt lt material name lt lt material CStr lt lt endl float thickness homogeneousSolidSection thickness cout lt lt thickness lt lt thickness lt lt endl Similarily to access the beam profile repository odb ProfileContainer profileContainer sectionApi profiles int numProfiles sectionApi numProfiles cout lt lt Total Number of profiles in the ODB lt lt numProfiles lt lt endl The Profile object can be one of the various profile types The odb_isA method can be used to determine the profil
80. of the Viewport object The following statements show how you access a member of an object gt gt gt myWidth session viewports myViewport width gt gt gt print Viewport width myWidth Viewport width 100 0 OBJECT ORIENTED PROGRAMMING AND THE Abaqus SCRIPTING INTERFACE The standard Python statement object _members___lists all the members of an object For example the following statement lists all the members of a Viewport object session viewports myViewport members _ The values of members are specific to each instance of the object For example the value of the width member of a Viewport object is specific to each viewport Members of an Abaqus object are read only consequently you cannot change their value with a simple assignment statement You use the set Values method to change the value of a member For example the setValues statement in the following script changes the thickness of a shell section gt gt gt import section gt gt gt shellSection mdb models Model 1 HomogeneousShellSection name Steel Shell thickness 1 0 material Steel gt gt gt print Original shell section thickness ShellSection thickness Original shell section thickness 1 0 gt gt gt shellSection setValues thickness 2 0 gt gt gt print Final shell section thickness ShellSection thickness Final shell section thickness 2 0 You cannot use assignment to change the value of the
81. of the first and second steps Creates variables that refer to the stress field output in the last frame of the first and second steps Subtracts the displacement field output from the two steps and puts the result in a variable called deltaDisplacement Subtracts the stress field output from the two steps and puts the result in a variable called deltaStress Selects deltaDisplacement as the default deformed variable Selects the von Mises invariant of deltaStress as the default field output variable Plots a contour plot of the result The resulting contour plot is shown in Figure 3 3 3 2 1 Use the following commands to retrieve the script and the output database that is read by the script abaqus fetch job odbExample abaqus fetch job viewer tutorial The example script odbExample py READING FROM AN OUTPUT DATABASE S S Mises Avg 75 4 012e 02 3 678e 02 3 344e 02 3 011e 02 2 677e 02 2 343e 02 2 010e 02 E 41 676e 02 x 1 342e 02 1 009e 02 6 750e 03 3 414e 03 7 711e 05 Step Session Step Step for Viewer non persistent fields Session Frame Primary Var S S Mises Deformed Var U U Deformation Scale Factor 1 000e 00 Figure 3 3 The resulting contour plot Script to open an output database superimpose variables from the last frame of different steps and display a contour plot of the result from abaqus impo
82. output database This example illustrates how you can print the content of an output database The example opens the output database specified on the command line and calls functions that print the following Parts Part instances The root assembly Connectors Connector properties Datum coordinate systems Nodes Elements Sets Faces 10 76 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE e Sections e Steps e Frames e Fields e Field values e Field bulk data e Field locations e History regions e History output e History points Use the following command to retrieve the example program abaqus fetch job odbDump 10 15 4 Decreasing the amount of data in an output database by retaining data at specific frames This example illustrates how you can decrease the size of an output database In most cases a large output database results from excessive field output being generated over a large number of frames The Abaqus C API does not support the deletion of data from an output database however you can use this example program to copy data from select frames into a second output database created by a datacheck analysis that has identical model data The original analysis and the datacheck analysis must be run using the same number of processors because the internal organization of data may differ based on the number of processors The program uses addData to copy data at specified frames from the large output dat
83. regenerate the mesh d 0 setValues value angle feature setValues sketch tmpSketch part regenerate 8 18 INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS assembly regenerate assembly setLogicalCorners region facel corners vl1 v2 v9 v8 assembly setLogicalCorners region face2 corners v2 v3 v4 v9 assembly setLogicalCorners region face3 corners v9 v4 v5 v6 assembly setLogicalCorners region face4 corners v8 v9 v6 Vv7 assembly generateMesh regions instance Run the job then process the results job submit job waitForCompletion print Completed job for s at s degrees elemName angle disp maxMoment minMoment getResults dispData elemName append angle disp maxMomentData elemName append angle maxMoment minMomentData elemName append angle minMoment Plot the results createXYPlot 10 10 Skew 1 Displacement 4x4 Mesh dispData createXYPlot 160 10 Skew 2 Max Moment 4x4 Mesh maxMomentData createXYPlot 310 10 Skew 3 Min Moment 4x4 Mesh minMomentData The script imports two functions from skewExampleUtils The functions do the following e Retrieve the displacement and calculate the maximum bending moment at the center of the plate e Display curves of theoretical and computed results in a new viewport skewExampleUtils py Utilities for the scripting tutorial Skew Example non from abaqus
84. script through the Python interpreter and return you to the system prompt If your script accesses the functionality of any of the Abaqus CAE modules the statements must be interpreted by the Abaqus CAE kernel you cannot run the script from the Python interpreter invoked from the system prompt You must execute the script in Abaqus CAE by selecting File Run Script from the main menu bar and selecting the file to execute In addition the script must contain the following statements from abaqus import from abaqusConstants import If your script accesses and manipulates data in an output database you can execute the script using either of the methods already described e Type abaqus python scriptname py at the system prompt The script must contain the following statement from odbAccess import 5 1 5 Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE 5 2 Select File Run Script from the Abaqus CAE main menu bar and select the file to execute The script must contain the following statement from visualization import Abaqus Scripting Interface documentation style This section describes the style that is used to describe a command in the Abaqus Scripting Reference Manual You may want to refer to the Abaqus Scripting Reference Manual while you read this section and compare the style of a documented command with the descriptions provided here The following topics are covered 5 2 1 How the commands are ordered
85. sets and the element sets in the PART 1 1 part instance odb InstanceRepository amp iCon odb rootAssembly instances odb Instance amp instance iCon PART 1 1 cout lt lt Node set keys lt lt endl odb SetRepositoryIT setItN instance nodeSets for setItN first setItN isDone setItN next cout lt lt setItN currentKey CStr lt lt endl cout lt lt Element set keys lt lt endl odb SetRepositoryIT setItE instance elementSets for setItE first setItE isDone setItE next cout lt lt setItE currentKey CStr lt lt endl The resulting output is Node set keys BOT N481 TOP N1 Element set keys CENT FOAM The following statement assigns a variable topNodeSet to the TOP node set in the PART 1 1 part instance odb InstanceRepository amp iCon odb rootAssembly instances odb Instance amp instance iCon PART 1 1 odb Set amp topNodeSet instance nodeSets TOP The type of the object to which topNodeSet refers is OdbSet After you create a variable that refers to a region you can use the variable to refer to a subset of field output data as described in Using regions to read a subset of field output data Section 10 10 8 10 23 a READING FROM AN OUTPUT DATABASE To access the set information on a part instance node set information odb Set amp nodeSet instance nodeSets CENTER const odb
86. smallOdb ringshell datacheck largeOdb ringshell 10 78 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE The program prompts you for the increment between frames Results from ODB ringshell odb will be filtered amp written to ODB ringshell datacheck By default only the first amp last increment of a step will be saved For each step enter the increment between frames for example 3 gt frames 0 3 6 lastframe will be saved STEP Step 1 has 101 Frames Enter Increment between frames Enter 37 to define the increment between frames The program then reads the data and displays the frames being processed 10 15 5 Processing frame 0 Processing frame 37 Processing frame 74 Processing frame 100 Filtering successfully completed Stress range for multiple load cases This example illustrates how you can use the envelope operations to compute the stress range over a number of load cases The example program does the following For each load case during a specified step the program collects the S11 components of the stress tensor fields into a list of scalar fields Computes the maximum and minimum of the S11 stress component using the envelope calculations Computes the stress range using the maximum and minimum values of the stress component Creates a new frame in the step Writes the computed stress range into a new FieldOutput object in the new frame Use the following command to retrieve the exam
87. source an acoustic monopole radiating in the radial direction only The acoustic pressure p and the acoustic far field pressure pr 4p at a distance r from the center of the sphere are Ti ik r 1r p r po eter r and ikro 7 PFAR T poroke where pp is the known acoustic pressure at some reference distance ro and k is the wave number For this single element example you should enter a value of 1 0 for the speed of sound thus k 2r f where f is the frequency in Hz ro in this model is 1 and po is 0 001 The equations for the acoustic pressure p and the acoustic far field pressure pr 4p reduce to 0 001 _ e th r 1 r p r and 9 70 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE prar r 0 001ke 9 10 12 An Abaqus Scripting Interface version of FELBOW This example illustrates the use of an Abaqus Scripting Interface script to read selected element integration point records from an output database and to postprocess the elbow element results The script creates X Y data that can be plotted with the X Y plotting capability in Abaqus CAE The script performs the same function as the FORTRAN program described in Creation of a data file to facilitate the postprocessing of elbow element results FELBOW Section 14 1 6 of the Abaqus Example Problems Manual The script reads integration point data for elbow elements from an output database to visualize one of the following 1
88. the nodeSequence object has to be created in memory Many of the methods in the Abaqus Scripting Interface that provide access to an output database return a reference to an object rather than the object itself It is much more efficient to modify the previous example to specify the returned type to be a reference odb Instance amp instance odb rootAssembly instances PART 1 1 const odb SequenceNode amp nodeSequence myInstance nodes In this case no new object is created and no copy constructors are called 10 61 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE 10 15 Example programs that access data from an output database The following examples illustrate how you use the output database commands to access data from an output database e Finding the maximum value of von Mises stress Section 10 15 1 e Creating an output database Section 10 15 2 e Reading data from an output database Section 10 15 3 e Decreasing the amount of data in an output database by retaining data at specific frames Section 10 15 4 e Stress range for multiple load cases Section 10 15 5 e A CH version of FELBOW Section 10 15 6 10 15 1 Finding the maximum value of von Mises stress This example illustrates how you can iterate through an output database and search for the maximum value of von Mises stress The program opens the output database specified by the first argument on the com
89. they are used in an assembly e Read field output data from selected steps frames and regions e Read history output data e Operate on field output and history output data e Write model data field output data and history data to an existing output database or to a new output database Using C to access an output database This section describes how you use the C language to access an application programming interface API to the data stored in an output database The functionality of the C API is identical to the Abaqus Scripting Interface API however the interactive nature of the Abaqus Scripting Interface and its integration with Abaqus CAE makes it easier to use and program The C interface is aimed at experienced C programmers who want to bypass the Abaqus Scripting Interface for performance considerations The C API offers faster access to the output database although this is a consideration only if you need to access large amounts of data 2 Abaqus CAE AND THE Abaqus SCRIPTING INTERFACE Introduction to the Abaqus Scripting Interface 2 1 The following topics are covered e Abaqus CAE and the Abaqus Scripting Interface Section 2 1 e How does the Abaqus Scripting Interface interact with Abaqus CAE Section 2 2 Abaqus CAE and the Abaqus Scripting Interface When you use the Abaqus CAE graphical user interface GUI to create a model and to visualize the results commands are issued intern
90. to modify the data associated with the object For example if you are creating an output database you first create an Odb object You then use the addNodes and addElements methods of the Part object to add nodes and elements respectively Similarly you use the addData method of the FieldOutput object to add field output data to the output database e You use the Access description provided with each object in the Abaqus Scripting Reference Manual to determine how you access the object You append a method or a member to this description when you are writing a script ERROR HANDLING IN THE Abaqus SCRIPTING INTERFACE e You use the Path description provided with each constructor in the Abaqus Scripting Reference Manual to determine the path to the constructor e You use the setValues method to modify the members of an Abaqus Scripting Interface object session viewports Side view setValues origin 20 20 5 5 Error handling in the Abaqus Scripting Interface The basics of Python s exception handling are described in Error handling Section 4 6 4 and the same techniques apply to the Abaqus Scripting Interface If certain circumstances arise while a script is running Python allows you to take the necessary action and still allows the script to continue Alternatively when Abaqus CAE issues or throws an exception and the exception is not handled by the script Abaqus CAE displays the exception message in the message
91. tuple 5 6 10 Session data The customKernel module also provides a session customData object that allows you to store data on the session object and query it from the GUI Data stored on the session object persist only for the current Abaqus CAE session When you close the Abaqus CAE session Abaqus does not store any of the data below session customData on the model database As a result these data will be lost and you will not be able to retrieve these data when you start a new session and open the model database The session object is useful for maintaining data relevant to the current session only such as the current model or output database The same methods and classes that are available for mdb customData are available for session customData 5 6 11 Saving application data in a model database If you have custom kernel scripts that store data in a model database you may want to store information about your application in the same model database When the model database is opened subsequently you can access this information and decide how to proceed For example you can store version information and check if you need to upgrade your data in the model database You use the appData object to store custom application related data in the model database The appData object is an instance of an AbaqusAppData class You can add any attributes to the appData object that are necessary to track information about your custom application The foll
92. useful in determining the number of output locations per element For example when you are accessing element data at integration points you may need to determine the number of integration points per element You can determine the number of integration points per element by dividing the length of the block which is the total number of output locations by the number of elements in the block For example odb FieldOutput amp stress lastFrame fieldOutputs S const odb SequenceFieldBulkData amp seqStressBulkData stress bulkDataBlocks int numStressBlocks seqStressBulkData size for int jblock 0 jblock lt numStressBlocks jblock const odb FieldBulkData amp bulkData seqStressBulkData jblock int numValues bulkData length int numComp bulkData width float data bulkData data int nElems bulkData numberOfElements 10 32 READING FROM AN OUTPUT DATABASE int numIP numValues nElems int elementLabels bulkData elementLabels int integrationPoints bulkData integrationPoints const odb SectionPoint amp myBulkSectionPoint bulkData sectionPoint int sectPoint myBulkSectionPoint number if sectPoint cout lt lt Section Point lt lt sectPoint lt lt endl cout lt lt Base Element type lt lt bulkData baseElementType CStr lt lt endl for int elem 0 ipPosition 0 dataPosition 0 elem lt numValues elem numIP cout lt lt El label lt lt elem
93. your script uses a SymbolicConstant defined by the Abaqus Scripting Interface you must import the SymbolicConstant with the following statement before you refer to it from abaqusConstants import When an argument to a command is a SymbolicConstant the description in the Abaqus Scripting Reference Manual lists all its possible values For example when you are printing an image the image can be rendered in one of the following formats BLACK AND WHITE GREYSCALE or COLOR Similarly a data member can be a SymbolicConstant For example the type member of the Elastic object can be one of the following SymbolicConstants ISOTROPIC ORTHOTROPIC ANISOTROPIC ENGINEERING CONSTANTS LAMINA TRACTION or COUPLED_ TRACTION If the SymbolicConstants provided by the Abaqus Scripting Interface do not meet your needs you can create your own SymbolicConstants using the SymbolicConstant constructor For more information see SymbolicConstant object Section 52 1 of the Abaqus Scripting Reference Manual 5 3 2 Booleans Python defines two Boolean values True and False The type of a Python Boolean is lt type bool gt myPythonBoolean True type myPythonBoolean lt type bool gt In addition the Abaqus Scripting Interface defines a Boolean object derived from the SymbolicConstant object which can take the values ON and OFF For example noPartsInputFile is a member of a Model a Abaqus SCRIPTING INTERFACE DATA TYPES object th
94. 4 5 5 Sequence operations Python provides a set of tools that allow you to operate on a sequence Slicing Sequences can be divided into smaller sequences This operation is called slicing The expression sequence m n returns a copy of sequence from m to n 1 The default value for m is zero the default value for n is the length of the sequence gt gt gt myList 0 1 2 3 4 gt gt gt myList 1 4 1 2 3 gt gt gt myString linear load gt gt gt myString 7 load gt gt gt myString 6 linear Repeat a sequence gt gt gt x 1 2 gt gt gt x 2 1 2 1 2 gt gt gt s Hoop Stress gt gt gt s 2 gt gt gt Hoop StressHoop Stress THE BASICS OF PYTHON Determine the length of a sequence gt gt gt myString linear load gt gt gt len myString 11 gt gt gt myList 0 1 2 3 4 gt gt gt len myList 5 Concatenate sequences gt gt gt a 0 1 gt gt gt b 9 8 gt gt gt a b 0 1 9 8 gt gt gt test wing34 gt gt gt fileExtension odb gt gt gt test fileExtension wing34 odb Range The range function generates a list containing a sequence of integers You can use the range function to control iterative loops The arguments to range are start the starting value end the ending value plus one and step the step between each value The start and step arguments are optional the default start argument is 0 and the def
95. A mySteel impactModel Material name Steel Create a section firstSection impactModel HomogeneousSolidSection name steelSection 1 material Steel thickness 1 0 Copy the section secondSection impactModel Section name steelSection 2 objectToCopy firstSection 6 2 3 Deleting objects In general if you can create an object you can delete the object For example the following statements create a Material object in the material repository myMaterial mdb models Model 1 Material name aluminum You can use the Python del statement to delete an object but you must provide the full path to the object del mdb models Model 1 materials aluminum The variable myMaterial that referred to the object still exists however the variable no longer refers to the object You can use the del statement to delete the variable del myMaterial Conversely if you create the object as before but delete the variable that referred to the object only the variable is deleted the object still exists You can assign a new variable to the object 6 12 Abaqus CAE SEQUENCES myMaterial mdb models Model 1 Material name aluminum del myMaterial myNewMaterial mdb models Model 1 materials aluminum The previous explanation does not apply to the few Abaqus CAE objects that are not members of either an Mdb object or a Session object for example XYData and Leaf objects These objects are some
96. Ascher Learning Python Second Edition O Reilly amp Associates ISBN 0596002815 Lutz Mark and Gigi Estabrook Python Pocket Reference O Reilly amp Associates ISBN 1565925009 Martelli Alex Python in a Nutshell O Reilly amp Associates ISBN 0596001886 Martelli Alex and David Ascher Python Cookbook O Reilly amp Associates ISBN 0596001673 Van Laningham Ivan Sams Teach Yourself Python in 24 Hours Sams Publishing ISBN 0672317354 The books Python Essential Reference and Learning Python are recommended reading USING THE PYTHON INTERPRETER Python newsgroups Discussions of Python programming can be found at e comp lang python e comp lang python announce 4 3 Using the Python interpreter Python is an interpreted language This means you can type a statement and view the results without having to compile and link your scripts Experimenting with Python statements is quick and easy You are encouraged to try the examples in these tutorials on your workstation and you should feel free to experiment with your own variations To run the Python interpreter do one of the following e If you have Abaqus installed on your UNIX or Windows workstation type abaqus python at the system prompt Python enters its interpretive mode and displays the gt gt gt prompt Type help copyright credits or license for more information gt gt a gt gt gt b 3 gt gt gt a b
97. E from odbAccess import from sys import argv exit def rightTrim input suffix if input find suffix 1 input input suffix return input def getMaxMises odbName elsetName Print max mises location and value given odbName and elset optional naw elset elemset None region over the entire model nut Open the output database odb openOdb odbName assembly odb rootAssembly Check to see if the element set exists in the assembly nunn if elsetName try elemset assembly elementSets elsetName region in the element set elsetName except KeyError print An assembly level elset named s does not exist in the output database s elsetName odbName odb close exit 0 uuu Initialize maximum values maxMises 0 1 maxElem 0 maxStep None maxFrame 1 Stress S isStressPresent 0 9 46 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE for step in odb steps values print Processing Step step name for frame in step frames allFields frame fieldOutputs if allFields has_ key Stress isStressPresent 1 stressSet allFields Stress if elemset stressSet stressSet getSubset region elemset for stressValue in stressSet values if stressValue mises gt maxMises maxMises stressValue mises MaxElem stressValue elementLabel maxStep step name maxFrame frame incrementNumber if isStressPresent print M
98. E creates a new main file and displays it in the main window The file is created using the default naming convention abaqus guilLog where starts at 1 and is incremented as you create more files in the current directory You can also click the New guiLog L icon to create a new file Abaqus automatically designates the new script as the main file Open Open a script You can also click the Open file Ei icon to open a script If you have not yet opened or created another script Abaqus automatically makes the first opened file the main file for testing Otherwise the file opened becomes the current file viewed in the main window but it is not the main file used for testing Tip You can drag and drop script files from the desktop or from Windows Explorer into the Abaqus PDE for editing Select Main File Open a script as the main file for testing You can also click the Open main file icon to open a script as the main file Make Current Main Designate the current script in the main window as the main file for testing Save Save changes to the current file You can also click Save to save the current file Save As Save the current file with a new name Reload Modules Reload user interface modules to capture any changes that you made since they were first loaded You can also click Reload Modules B to reload the user interface modules The Abaqus PDE reloads user interface modules in the Abaqus CAE GUI and Abaqus CAE
99. E message area You can leave the load case field blank if the analysis did not include load cases The script does not continue until all the values in the dialog box are acceptable The same values are written to a file called compositeBeam_ values dat in the local directory and these values appear as defaults in the dialog box the next time you run the example script After the get Inputs method returns acceptable values the script reads the two output databases and writes the generated data back to the output database created by the two dimensional cross section analysis The script then displays an undeformed contour plot of S11 and uses the get Inputs method again to display a dialog box with a list of the available stress and strain components S11 22 33 Ell E22 and E33 Click OK in this dialog box to cycle through the available components Click Cancel to end the script You can also select the component to display by starting the Visualization module and selecting Result Field Output from the main menu bar The example script writes new stress and strain fields The script must provide a unique name for the generated field output because each of these fields is generated for a specific beam analysis output database and for a specific part instance step frame element and integration point The script constructs this unique name as follows e All contour stress and strain fields for a specific beam analysis output database are writte
100. ESS INV3 MAX PRINCIPAL MID PRINCIPAL MIN_ PRINCIPAL TENSOR _ 3D SURFACE 11 22 12 MAX PRINCIPAL MIN PRINCIPAL MAX INPLANE PRINCIPAL MIN _INPLANE PRINCIPAL 10 47 WRITING TO AN OUTPUT DATABASE Data type Components Invariants TENSOR 3D PLANAR 11 22 33 12 MISES TRESCA PRESS INV3 MAX PRINCIPAL MID PRINCIPAL MIN PRINCIPAL MAX INPLANE PRINCIPAL MIN_INPLANE PRINCIPAL OUTOFPLANE PRINCIPAL TENSOR 2D SURFACE 11 22 12 MAX PRINCIPAL MIN PRINCIPAL MAX INPLANE PRINCIPAL MIN _INPLANE PRINCIPAL TENSOR 2D PLANAR 11 22 33 12 MISES TRESCA PRESS INV3 MAX PRINCIPAL MID PRINCIPAL MIN PRINCIPAL MAX INPLANE PRINCIPAL MIN_INPLANE PRINCIPAL OUTOFPLANE PRINCIPAL For example the following statements add element data to the FieldOutput object odb SequenceString tensorCompLabels tensorCompLabels append s11 tensorCompLabels append s22 tensorCompLabels append s33 tensorCompLabels append s12 tensorCompLabels append s13 tensorCompLabels append s23 odb SequenceInvariant tensorInvar tensorInvar append odb Enum tensorInvar append odb Enum tensorInvar append odb Enum tensorInvar append odb Enum tensorInvar append odb Enum odb FieldOutput amp tensorField stress tensor tensorCompLabels odb SequenceInt tensorLabels 10 48 MISES TRESCA MAX PRINCIPAL MID PRINCIPAL M
101. IN_ PRINCIPAL frameOne FieldOutput S odb Enum TENSOR 3D FULL tensoriInvar WRITING TO AN OUTPUT DATABASE tensorLabels append 9 tensorLabels append 99 odb SequenceSequenceFloat tensorDat odb SequenceFloat t1 tl append 1 0 tl append 2 0 tl append 3 0 tl append 0 0 tl append 0 0 tl append 0 0 odb SequenceFloat t2 t2 append 120 0 t2 append 55 0 t2 append 85 0 t2 append 55 0 t2 append 75 0 t2 append 33 0 tensorDat append t1 tensorDat append t2 tensorField addData odb Enum CENTROID instanceA tensorLabels tensorDat topShell For a full description of the addData command see addData Section 60 7 6 of the Abaqus Scripting Reference Manual As a convenience localCoordSystem can be a single transform or a list of transforms If localCoordSystem is a single transform it applies to all values If localCoordSystem is a list of transforms the number of items in the list must match the number of data values 10 11 5 Default display properties The previous examples show how you can use commands to set the default field variable and deformed field variable Abaqus CAE uses the default field variable setting to determine the variable to display in a contour plot for example stress Similarly the default deformed field variable determines the variable that distinguishes a deformed plot from an undeformed plot Typically you will use displacement for the default d
102. Interface You can extend the functionality of the Abaqus Scripting Interface by writing your own modules that contain classes and functions to accomplish tasks that are not directly available in Abaqus For example you can write a function to print the names of all materials that have a density specified or you can write a function that creates a contour plot using a custom set of contour plot options Creating functions and modules in Python is described in Creating functions Section 4 6 1 and Functions and modules Section 4 6 5 This section describes how you can extend the functionality of the Abaqus Scripting Interface The following topics are covered e Storing custom data in the model database or in other objects Section 5 6 1 e Interaction with the GUI Section 5 6 2 e CommandRegister class Section 5 6 3 e Repositories Section 5 6 4 e Repository methods Section 5 6 5 e RepositorySupport Section 5 6 6 e Registered dictionaries Section 5 6 7 e Registered lists Section 5 6 8 e Registered tuples Section 5 6 9 e Session data Section 5 6 10 e Saving application data in a model database Section 5 6 11 e Checking a model database when it is opened Section 5 6 12 1 Storing custom data in the model database or in other objects If you extend the kernel functionality by writing your own classes and functions you may want to store data requ
103. N POINT position 9 5 8 Reading history output data History output is output defined for a single point or for values calculated for a portion of the model as a whole such as energy Depending on the type of output expected the historyRegions repository contains data from one of the following e anode e an integration point e aregion e a material point Note History data from an analysis cannot contain multiple points The history data object model is shown in Figure 9 5 In contrast to field output which is associated with a frame history output is associated with a step History output data are stored in the historyRegions repository under an OdbStep object Abaqus creates keys to the historyRegions repository that describe the region for example e Node PART 1 1 1000 e Element PART 1 1 2 Int Point 1 e Assembly rootAssembly The output from all history requests that relate to a specified point is collected in one HistoryRegion object A HistoryRegion object contains multiple HistoryOutput objects Each HistoryOutput object in turn contains a sequence of frameValue value sequences In a time domain analysis domain TIME the sequence is a tuple of stepTime value Ina frequency domain analysis domain FREQUENCY the 9 20 READING FROM AN OUTPUT DATABASE parts Container l sections H Singular object materials Model Data steps frames HE fieldOutputs historyRegions historyOutputs AE data R
104. OGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE 10 15 2 1 2 3 4 5 Read history data 6 lt lt 3 help Print usage n Creating an output database The following example illustrates how you can use the Abaqus C API commands to do the following Create a new output database Add model data Add field data Add history data Save the output database Use the following command to retrieve the example program abaqus fetch job odbWrite 1 111 1 1 111 1 111 11 1111 1 11111 1111 1 1111 1 1 111111111111 Code to create an output database and add model field and history data The code also reads history data performs an operation on the data and writes the result back to the output database SECTION System includes include Begin include include include lt math h gt local includes lt odb API h gt lt odb MaterialTypes h gt lt odb SectionTypes h gt End local includes int ABQmain int argc char argv Create an ODB which also creates the rootAssembly int n odb String name simpleModel odb String analysisTitle ODB created with C ODB API odb String description example illustrating C ODB API 10 68 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE odb String path odbWriteC odb odb Odb amp odb Odb name analysisTitle description path Model data Set up the
105. OR 3D_FULL fields cannot appear in the same list The output region of all the fields must be the same All the fields must apply to the whole model or all the fields must apply to the same set Transformation of results Transformations of vector and tensor fields are supported for rectangular cylindrical and spherical coordinate systems The coordinate systems can be fixed or model based Model based coordinate systems refer to nodes for position and orientation Abaqus uses the coordinates of the deformed state to determine a systems origin and orientation for model based coordinate systems Transformations that use a model based coordinate system can account for large displacements of both the coordinate system and the structure The steps required to transform results are see also the example Transformation of field results Section 9 10 9 Create the coordinate system Retrieve the field from the database Use the fieldOutput getTransformedField method to obtain a new field with the results in the specified coordinate system For large displacement of the structure and coordinate system you must also retrieve the displacement field at the frame You must compute this displacement field for the whole model to ensure that the required displacement information is available The following rules apply to the transformation of results Beams truss and axisymmetric shell element results will not be transformed The co
106. Odb object Access the materials repository using the command allMaterials odb materials for materialName in allMaterials keys print Material Name materialName To print isotropic elastic material properties in a material object for material in allMaterials values if hasattr material elastic elastic material elastic if elastic type ISOTROPIC print isotropic elastic behavior type s elastic moduli titlel Young modulus Poisson s ratio title2 if elastic temperatureDependency ON title2 Temperature 9 12 READING FROM AN OUTPUT DATABASE dep elastic dependencies title3 for x in range dep title3 field d x print s s s titlel title2 title3 for dataline in elastic table print dataline Some Material definitions have suboptions For example to access the smoothing type used for biaxial test data specified for a hyperelastic material if hasattr material hyperelastic hyperelastic material hyperelastic testData hyperelastic testData if testData ON if hasattr hyperelastic biaxialTestData biaxialTestData hyperelastic biaxialTestData print smoothing type biaxialTestData smoothing Chapter 28 Material commands of the Abaqus Scripting Reference Manual describes the Material object commands in more detail Sections Sections are stored in the sections repository under the Odb object The following statements displ
107. Output position NODES SF Job Create a job and name it skew The job must refer to the model Model 1 8 3 2 Changing the skew angle The parameterized script changes the skew angle of the plate and computes the maximum bending moment at the center for two different element types The script changes the skew angle by modifying an angular dimension and selecting the vertices to move You need to add the angular dimension and determine the indices of the dimension to modify and the vertices to move INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS To add the angular dimension 1 Return to the Part module 2 From the main menu bar select Feature Edit and select the plate to edit 3 From the Edit Feature dialog box select Edit Section Sketch 4 From the Sketcher toolbox select the dimension tool ra and dimension the angle at the lower left corner of the plate as shown in Figure 8 3 Figure 8 3 Dimension the angle at the lower left corner of the plate To determine the indices of the dimension to modify and the vertices to move From the Sketcher toolbox select the edit dimension tool gt Select the lower left angular dimension Enter a dimension of 60 and click OK Exit the Sketcher tools and exit the Sketcher From the Edit Feature dialog box select OK oa fF O N Examine the replay file abaqus rpy The last few lines of the replay file will contain the statements that modified the angular
108. Section 5 6 4 from abaqus import from customKernel import CommandRegister RepositorySupport class Block CommandRegister def init self name CommandRegister init self class Model RepositorySupport def init self name RepositorySupport init self self Repository blocks Block mdb customData Repository models Model 5 20 EXTENDING THE Abaqus SCRIPTING INTERFACE mdb customData Model Model 1 mdb customData models Model 1 Block Block 1 5 6 7 Registered dictionaries You use the RegisteredDictionary class to create a dictionary that can be queried from the GUI In addition the infrastructure can notify the GUI when the contents of the dictionary change The key of a registered dictionary must be either a String or an Int The values associated with a key must all be of the same type all integers or all strings for example to prevent errors when accessing them from the GUL The RegisteredDictionary class has the same methods as a Python dictionary In addition the RegisteredDictionary class has a changeKey method that you use to rename a key in the dictionary For example from customKernel import RegisteredDictionary mdb customData myDictionary RegisteredDictionary mdb customData myDictionary Key 1 1 mdb customData myDictionary changeKey Key 1 Key 2 5 6 8 Registered lists You use the RegisteredList class to create a list that can be queried from the GUI In addition the in
109. Shell object gt gt gt myShell thickness 2 0 TypeError readonly Attribute The following statements illustrate the use of constructors methods and members gt gt gt Create a Section object gt gt gt mySection mdb models Model 1 HomogeneousSolidSection name solidSteel material Steel thickness 1 0 gt gt gt Display the type of the object gt gt gt print Section type type mySection Section type lt type HomogeneousSolidSection gt gt gt gt List the members of the object gt gt gt print Members of the section are mySection members _ Members of the section are category dimension layout material name thickness gt gt gt List the methods of the object gt gt gt print Methods of the section are mySection methods _ Methods of the section are setValues gt gt gt Print the value of each member in a nice format gt gt gt for member in mySection members 5 11 5 OBJECT ORIENTED PROGRAMMING AND THE Abaqus SCRIPTING INTERFACE Q print mySection s s member getattr mySection member mySection category SOLID mySection dimension THREE DIM mySection layout HOMOGENEOUS mySection material Steel mySection name solidSteel mySection thickness 1 0 You use the Access description provided with each object in the Abaqus Scripting Reference Manual to determine how you access the object You append a metho
110. The data members of an object can be either primitives integer floating point string or other objects The following topics are covered e Class naming convention Section 10 8 1 e Constructors Section 10 8 2 e Header files Section 10 8 3 10 14 THE Abaqus C API ARCHITECTURE 10 8 1 Class naming convention All class names start with odb _ to avoid possible name clashes For example the string class is named odb String 10 8 2 Constructors A constructor is a method that creates an object The Abaqus C API uses the following three types of constructors Constructors for nonpersistent objects Constructors for nonpersistent objects are the standard C constructors For example odb String partName New Part Constructors for persistent objects You create a persistent object by calling a method on an existing Abaqus C API object In Abaqus the convention is that the constructor method name corresponds to the name of the object created and that the first letter of the constructor name is capitalized The object can be accessed using the return value of the constructor call or using a lowercase version of the method name For example a Frame object can be created using the following odb Frame sl writeFrame2 stepl Frame 2 1 3 frame 2 of stepl at time 1 3 The Frame object can be retrieved with the following odb Frame amp sl readFrame2 stepl frames 1 Constructors for objects c
111. The element normal is the normal computed for the frame associated with the field by Abaqus and you cannot redefine the normal Abaqus defines the location of the results location from the nodal locations You specify optional arguments if you want to use the deformed nodal locations to transform results For rectangular cylindrical and spherical coordinate systems the second component direction for the transformed results will be determined by one of the following The Y axis in a rectangular coordinate system The 6 axis in a cylindrical coordinate system The axis in a spherical coordinate system A user specified datum axis projected onto the element plane If the coordinate system used for projection and the element normal have an angle less than the specified tolerance the default is 30 Abaqus will use the next axis and generate a warning 10 57 IMPROVING THE EFFICIENCY OF YOUR SCRIPTS 10 14 Improving the efficiency of your scripts If you are accessing large amounts of data from an output database you should be aware of potential inefficiencies in your program and techniques that will help to speed up your scripts e Creating objects to hold loop counters Section 10 14 1 e Creating objects to hold temporary variables Section 10 14 2 e Using references to objects Section 10 14 3 10 14 1 Creating objects to hold loop counters A program can spend a large proportion of its computation ti
112. UI SETTINGS Select Font dialog box Abaqus CAE main window Adaptivity Plotter plug in Amplitude Plotter plug in Create Weld dialog box Copy Annotation dialog box The sample statements follow gt abaqus Python gt gt gt import caePrefsAccess gt gt gt from caePrefsAccess import openGuiPreferences CURRENT HOME gt gt gt from caePrefsAccess import getGuiPrefsFileName getDisplayNamesInGuiPreferences gt gt gt from caePrefsAccess import printValuesList gt gt gt guiPrefsFileName getGuiPrefsFileName gt gt gt dispNames getDisplayNamesInGuiPreferences guiPrefsFileName gt gt gt print dispNames preludesim gt gt gt displayName dispNames 0 gt gt gt guiPrefs openGuiPreferences displayName gt gt gt printValuesList guiPrefs guiPreferences Abaqus CAE Geometry AFXFontSelectorDialog text type str 617 298 281 350 guiPreferences Abaqus CAE Geometry AFXMainWindow type str 193 67 1036 831 guiPreferences Abaqus CAE Geometry AdaptivityPlotter type str 11 156 226 240 guiPreferences Abaqus CAE Geometry Amplitude Plotter type str 1105 189 312 290 guiPreferences Abaqus CAE Geometry CREATE Weld type str 10 276 377 560 guiPreferences Abaqus CAE Geometry Copy MDB Annotation type str 122 273 160 79 You can change the geometry of the Abaqus CAE main window by issuing a command like the
113. Using a script to perform a parametric study Section 8 3 3 8 3 1 Creating the model to analyze You should use Abaqus CAE to create your model and to save the resulting model database You will then use scripting to parameterize your model submit an analysis job and operate on the results generated Start Abaqus CAE and create a model database from the Start Session dialog box By default you are operating on a model named Mode1 1 The model should include the following Part Create a three dimensional planar shell part and name it Plate Use an approximate size of 5 0 All sides are 1 0 m long Delete all perpendicular and vertical constraints and apply the following constraints e a fixed constraint to the lower left vertex e horizontal constraints to the top and bottom edges if they are not already defined and e parallel constraints to the left and right edges Material Create a material and name it Steel The Young s modulus is 30 MPa and the Poisson s ratio is 0 3 Section Create a homogeneous shell section that refers to the material called Steel Name the section She11 The plate thickness is 0 01 m The length thickness ratio is thus 100 1 so that the plate is thin in the sense that transverse shear deformation should not be significant Assign the section to the plate Assembly Create the assembly using a single instance of the part Abaqus CAE names the part instance Plate 1 Step Create a sta
114. Values is a method of the Viewport object A constructor is a method that creates an object By convention all constructor names and all objects start with an uppercase character in the Abaqus Scripting Interface The name of a constructor is usually the same as the name of the type of object it creates In the following example Viewport is a constructor that creates a Viewport object called myViewport myViewport session Viewport name newViewport width 100 height 100 Some objects do not have a constructor The object is created as a member of another object when the first object is created For example Abaqus creates the vertices of a part when you create a part s geometry and the coordinates of the vertices are stored as Vertex objects The Vertex objects are members of the Part object The following statement prints the coordinates of the first vertex of a part print mdb models Model 1 parts Part 1 vertices 0 pointOn The standard Python statement object methods __lists all the methods of an object For example the following statement lists all the methods of a Viewport object session viewports myViewport methods _ See the Abaqus Scripting Reference Manual for a description of each method of the Abaqus Scripting Interface objects 5 4 2 The Abaqus Scripting Interface and members An object has members as well as methods A member can be thought of as a property of an object For example width is a member
115. Variation of an output variable around the circumference of a given elbow element or 2 Ovalization of a given elbow element The script creates either an ASCII file containing X Y data or a new output database file that can be viewed using Abaqus CAE To use option 2 you must ensure that the integration point coordinates COORD are written to the output database For option 1 the X data are data for the distance around the circumference of the elbow element measured along the middle surface and the Y data are data for the output variable For option 2 the X Y data are the current coordinates of the middle surface integration points around the circumference of the elbow element projected to a local coordinate system in the plane of the deformed cross section The origin of the local system coincides with the center of the cross section the plane of the deformed cross section is defined as the plane that contains the center of the cross section You should specify the name of the output database during program execution The script prompts for additional information depending on the option that was chosen this information includes the following e Your choice for storing results ASCII file or a new output database e File name based on the above choice e The postprocessing option 1 or 2 e The part name e The step name e The frame number e The element output variable option 1 only e The component of the variable option 1 only
116. a data dispData Make this the default deformed field for this step stepl1 setDefaultDeformedField uField For a full description of the FieldOutput constructor see FieldOutput Section 33 6 1 of the Abaqus Scripting Reference Manual The type argument to the FieldOutput constructor describes the type of the data tensor vector or scalar The properties of the different tensor types are Full tensor A tensor that has six components and three principal values Full three dimensional rotation of the tensor is possible Three dimensional surface tensor A tensor that has only three in plane components and two principal values Full three dimensional rotation of the tensor components is possible Three dimensional planar tensor A tensor that has three in plane components one out of plane component and three principal values Full three dimensional rotation of the tensor components is possible Two dimensional surface tensor A tensor that has only three in plane components and two principal values Only in plane rotation of the tensor components is possible Two dimensional planar tensor A tensor that has three in plane components one out of plane component and three principal values Only in plane rotation of the tensor components is possible The valid components and invariants for the different data types are given in Table 9 1 9 32 WRITING TO AN OUTPUT DATABASE Table 9 1 Valid components and
117. a odb Enum INTEGRATION POINT instancel elLabels topData spTop transform sField addData odb Enum INTEGRATION POINT instancel elLabels bottomData spBot transform For this step make this the default field for visualization stepl setDefaultField sField History data Create a HistoryRegion for a specific point odb HistoryPoint hPoint1 instancel getNodeFromLabel 1 odb String historyRegionName historyNode0 odb String historyRegionDescription Displacement and reaction force odb HistoryRegion amp hRegionStepl step1 HistoryRegion historyRegionName historyRegionDescription 10 73 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE hPoint1 Create variables for this history output in stepl odb String historyOutputName UL odb String historyOutputDescription Displacement odb HistoryOutput amp hOutputStep1U1 hRegionStep1 HistoryOutput historyOutputName historyOutputDescription odb Enum SCALAR historyOutputName RF1 historyOutputDescription Reaction Force odb HistoryOutput amp hOutputStep1Rfl hRegionStep1 HistoryOutput historyOutputName historyOutputDescription odb Enum SCALAR Add history data for stepl houtputStep1U1 addData 0 0 0 0 houtputStep1Rf1 addData 0 0 0 0 houtputStep1U1 addData 0 1 0 1 houtputStep1Rf1 addData 0 1 0 1 houtputStep1U1 addData 0 3 0 3 houtputStep1Rf1 addData 0 3 0 3 houtpu
118. abase into the new output database The addData method works only when the model data in the two output databases are identical For more information see addData Section 60 7 6 of the Abaqus Scripting Reference Manual When you run the program the following command line parameters are required smallOdb odbName The name of the output database created with a datacheck analysis of the original problem For more information see Abaqus Standard Abaqus Explicit and Abaqus CFD execution Section 3 2 2 of the Abaqus Analysis User s Manual largeOdb odbName The name of the large output database generated by the original problem The program copies selected frames from this output database The following parameters are optional 10 77 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE history Copy all history output from all available steps in the large output database By default history output is not copied WARNING Copying large amounts of history data can result in the program creating a very large output database debug Print a detailed report of all the operations performed during the running of the program By default no debug information is generated WARNING If you are extracting data from a large output database the debug option can generate large amounts of information You can also run the example with only the help parameter for a summary of the usage The following is an example of
119. ables You can use the following to view all the available field data in a frame For each field output value in the last frame print the name description and type members for f in lastFrame fieldOutputs values print f name f description print Type f type For each location value print the position for loc in f locations print Position loc position print The resulting print output lists all the field output variables in a particular frame along with their type and position COPEN TARGET IMPACTOR Contact opening Type SCALAR Position NODAL CPRESS TARGET IMPACTOR Contact pressure Type SCALAR Position NODAL CSHEARL TARGET IMPACTOR Frictional shear Type SCALAR Position NODAL 9 16 CSLIP1 Type SCALAR Position NODAL READING FROM AN OUTPUT DATABASE TARGET IMPACTOR Relative tangential motion direction 1 LE Logarithmic strain components Type TENSOR 2D PLANAR Position INTEGRATION POINT RF Reaction force Type VECTOR Position NODAL RM3 Reaction moment Type SCALAR Position NODAL S Stress components Type TENSOR 2D PLANAR Position INTEGRATION POINT U Spatial displacement Type VECTOR Position NODAL UR3 Rotational displacement Type SCALAR Position NODAL In turn a FieldOutput object has a member values that is a sequence of FieldValue objects that contain data Each data value in the sequence has a particular location in the model You ca
120. ace commands to reproduce the cantilever beam tutorial described in Appendix B Creating and Analyzing a Simple Model in Abaqus CAE of Getting Started with Abaqus Interactive Edition How you can use the Abaqus Scripting Interface to control the output from the Visualization module in Abaqus CAE Abaqus Viewer Opening the tutorial output database Section 8 2 1 explains how to use abaqus fetch to retrieve the Abaqus CAE tutorial output database Opening an output database and displaying a contour plot Section 8 2 2 explains how to open the tutorial output database display a contour plot and print the resulting viewport to a file Printing a contour plot at the end of each step Section 8 2 3 explains how to open the tutorial output database customize the legend display a contour plot at the end of each step and print the resulting viewports to a file How you can introduce more complex programming techniques into your Abaqus Scripting Interface scripts Investigating the skew sensitivity of shell elements Section 8 3 reproduces the problem found in Skew sensitivity of shell elements Section 2 3 4 of the Abaqus Benchmarks Manual You use Abaqus CAE to create the model and you use Abaqus Scripting Interface commands to parameterize an evaluation of the model by changing its geometry and element type The example investigates the sensitivity of the shell elements in Abaqus to skew distor
121. ailable publicly 4 29 5 1 EXECUTING SCRIPTS Using Python and the Abaqus Scripting Interface This section of the manual explains how Python and the Abaqus Scripting Interface combine to provide a powerful interface to Abaqus CAE The Abaqus Scripting Interface is an extension of the Python language and uses the syntax required by Python Techniques for combining Python statements and Abaqus Scripting Interface commands are introduced and numerous examples are provided The syntax of an Abaqus command is explained along with details of how you use the commands to interact with Abaqus CAE This section is intended as a programmer s guide to using the Abaqus Scripting Interface the Abaqus Scripting Reference Manual describes the details of each command The following topics are covered e Executing scripts Section 5 1 e Abaqus Scripting Interface documentation style Section 5 2 e Abaqus Scripting Interface data types Section 5 3 e Object oriented programming and the Abaqus Scripting Interface Section 5 4 e Error handling in the Abaqus Scripting Interface Section 5 5 e Extending the Abaqus Scripting Interface Section 5 6 Executing scripts You have seen how to execute Python statements from the stand alone Python interpreter If your script does not access the functionality of Abaqus CAE you can run the script by typing abaqus python scriptname py at the system prompt Abaqus will run the
122. ain analysis domain FREQUENCY the sequence is frequency value In a modal domain analysis domain MODAL the sequence is mode value You add the data values as time and data tuples The number of data items must correspond to the number of time items For example timeData 0 0 0 1 0 3 1 0 ulData 0 0 0 0004 0 0067 0 0514 rflData 27 456 32 555 8 967 41 222 hl _ul addData frameValue timeData value ulData hl rfl addData frameValue timeData value rf1Data similar for step2 timeData 1 2 1 9 3 0 4 0 ulData 0 8 0 9 1 3 1 5 rflData 0 9 1 1 1 3 1 5 h2 ul addData frameValue timeData value ulData h2 rf1l addData frameValue timeData value rf1Data 9 36 COMPUTATIONS WITH Abaqus RESULTS 9 7 Exception handling in an output database Python exception handling is described in Exception handling Section 5 5 4 Python exception handling in the output database is identical to that in the model database The exceptions thrown are of type OdbError for example the following script catches exceptions thrown when the python interface in not successful in opening an output database invalidOdbName invalid odb try myOdb openOdb invalidOdbName except OdbError e print Abaqus error message s str e print customized error message here except print Unknown Exception 9 8 Computations with Abaqus results The following topics are covered e Rules for the mat
123. ally by Abaqus CAE after every operation These commands reflect the geometry you created along with the options and settings you selected from each dialog box The GUI generates commands in an object oriented programming language called Python The commands issued by the GUI are sent to the Abaqus CAE kernel The kernel interprets the commands and uses the options and settings to create an internal representation of your model The kernel is the brains behind Abaqus CAE The GUI is the interface between the user and the kernel The Abaqus Scripting Interface allows you to bypass the Abaqus CAE GUI and communicate directly with the kernel A file containing Abaqus Scripting Interface commands is called a script You can use scripts to do the following e To automate repetitive tasks For example you can create a script that executes when a user starts an Abaqus CAE session Such a script might be used to generate a library of standard materials As a result when the user enters the Property module these materials will be available Similarly the script might be used to create remote queues for running analysis jobs and these queues will be available in the Job module e To perform a parametric study For example you can create a script that incrementally modifies the geometry of a part and analyzes the resulting model The same script can read the resulting output databases display the results and generate annotated hard copies from each analysis
124. alue objects This reconstruction could result in a significant performance degradation particularly for a large model 10 59 Oo IMPROVING THE EFFICIENCY OF YOUR SCRIPTS A slight change in the program greatly improves its performance as shown in the following example odb FieldOutputRepository amp fieldRep framel fieldOutputs odb FieldOutput amp stressField fieldRep get S odb FieldOutput amp strainField fieldRep get LE const odb SequenceFieldValue amp seqStressVal stressField values const odb SequenceFieldValue amp seqStrainVal strainField values int numFV seqStressVal size int strainComp 0 for int loc 0 loc lt numFV loc const odb FieldValue stressVal seqStressVal loc if stressVal mises gt stressCap cout lt lt Element label lt lt stressVal elementLabel lt lt endl cout lt lt Integration Point lt lt stressVal integrationPoint lt lt endl const odb FieldValue strainVal seqStrainVal loc const float data strainVal data strainComp cout lt lt LE for int comp 0 comp lt strainComp comp cout lt lt data comp cout lt lt endl Similarly if you expect to retrieve more than one frame from an output database you should create a temporary variable that holds the entire frame repository You can then provide the logic to retrieve the desired frames from the repository and avoid recreating the repository
125. alues using scalar data If you are looking for the extreme value of a vector or a tensor you must supply an invariant or a component label for the selection of the extreme value For example for vectors you can supply the MAGNITUDE invariant and for tensors you can supply the MISES invariant e The fields being compared must be similar For example VECTOR and TENSOR 3D_FULL fields cannot appear in the same list The output region of all the fields must be the same All the fields must apply to the whole model or all the fields must apply to the same set 10 13 4 Transformation of results Transformations of vector and tensor fields are supported for rectangular cylindrical and spherical coordinate systems The coordinate systems can be fixed or model based Model based coordinate systems refer to nodes for position and orientation Abaqus uses the coordinates of the deformed state to determine a systems origin and orientation for model based coordinate systems Transformations that use a model based coordinate system can account for large displacements of both the coordinate system and the structure The steps required to transform results are 10 56 COMPUTATIONS WITH Abaqus RESULTS Create the coordinate system Retrieve the field from the database Use the fieldOutput getTransformedField method to obtain a new field with the results in the specified coordinate system For large displacement of the structure and coordinat
126. ame name Python uses the object most recently imported However if you use the import modulename approach modulename qualifies the name of the object and makes it unique 4 6 6 Writing your own modules You can create your own module containing a set of Python functions You can import this module and make use of its functions The name of the module to import is the same as the name of the file containing the functions without the py file suffix For example you can create a module called myUtilities by copying a modified version of the function that calculates the distance from a point to the origin into a file called myUtilities py uuu myUtilities a module of mathematical functions import math def distance x y 4 27 PROGRAMMING TECHNIQUES Prints distance from origin to x y Takes two arguments x and y nunn Square the arguments and add them a x 2 y 2 Return the square root return math sqrt a You must import the module to make use of the functions and constants that it contains import myUtilities distance myUtilities distance 30 50 You can use the _doc__ method to obtain the documentation string from a module For example myUtilities doc__ myUtilities a module of mathematical functions A tool for finding bugs in your modules is provided with Abaqus The tool is called pychecker When you import a module pychecker prints warnings for any problems it finds with the Py
127. ame of the first step odb FieldOutput myDisplacements displacements getSubset nodeSet Finally print some field output data from each node in the node set a single node in this example const odb FieldValue val myDisplacements values 0 const float const data val data numComp cout lt lt Node lt lt val nodeLabel lt lt endl cout lt lt U for int comp 0 comp lt numComp comp cout lt lt data comp lt lt cout lt lt endl cout lt lt Magnitude lt lt val magnitude The resulting output is Node 1000 U 0 0000 76 4554 Magnitude 76 4554 10 11 Writing to an output database You can write your own data to an output database and you can use Abaqus CAE to view the data Writing to an output database is very similar to reading from an output database When you open an existing database the Odb object contains all the objects found in the output database such as instances steps and field output data In contrast when you are writing to a new output database these objects do not exist As a result you must use a constructor to create the objects For example you use the Part constructor to create a Part object the Instance constructor to create an OdbInstance object and the Step constructor to create an OdbStep object After you create an object you use methods of the objects to enter or modify the data associated with the object For example if you are creat
128. anguage that is widely used in the software industry A number of resources are available to help you learn more about the Python programming language Python web sites The official Python web site www python org contains a wealth of information on the Python programming language and the Python community For new Python programmers the web site contains links to General descriptions of the Python language Comparisons between Python and other programming languages An introduction to Python Introductory tutorials The web site also contains a reference library of Python functions to which you will need to refer Python books Altom Tim Programming With Python Prima Publishing ISBN 0761523340 Beazley David Python Essential Reference 2nd Edition New Riders Publishing ISBN 0735710910 Brown Martin Python The Complete Reference McGraw Hill ISBN 07212718X Brown Martin Python Annotated Archives McGraw Hill ISBN 072121041 Chun Wesley J Core Python Programming Prentice Hall ISBN 130260363 Deitel Harvey M Python How to Program Prentice Hall ISBN 130923613 Gauld Alan Learn To Program Using Python Addison Wesley ISBN 201709384 Harms Daryl D and Kenneth McDonald Quick Python Book Manning Publications Company ISBN 884777740 Lie Hetland Magnus Practical Python APress ISBN 1590590066 Lutz Mark Programming Python O Reilly amp Associates ISBN 1565921976 Lutz Mark and David
129. aqus CAE The following examples are provided e Opening the tutorial output database Section 8 2 1 e Opening an output database and displaying a contour plot Section 8 2 2 e Printing a contour plot at the end of each step Section 8 2 3 a GENERATING A CUSTOMIZED PLOT 8 2 1 Each ofthe following example scripts opens the output database used by the Visualization module tutorial in Getting Started with Abaqus Interactive Edition Use the following command to retrieve the output Opening the tutorial output database database that is read by the scripts 8 2 2 abaqus fetch job viewer_tutorial Opening an output database and displaying a contour plot The following example of a script containing Abaqus Scripting Interface commands uses the output database used by Appendix D Viewing the Output from Your Analysis of Getting Started with Abaqus Interactive Edition Use the following command to retrieve the example script abaqus fetch job viewerOpenOdbAndContour The script does the following Creates a viewport and makes it the current viewport Opens an output database Displays a contour plot Displays the model in the first frame of the third step Sets the number of contour intervals and the contour limits Prints a color image of the viewport to a png file nun viewerOpenOdbAndContour py Print a contour plot to a local PNG format file nunun from abaqus import from abaqusConsta
130. aracters to indicate that you are in a block controlled by indentation if elif and else gt gt gt load 10 gt gt gt if load gt 6 75 te print Reached critical load elif load lt 2 75 way print Minimal load else mies print Typical load while gt gt gt load 10 gt gt gt length 3 gt gt gt while load lt 1E4 wee load load length Ses print load Use break to break out of a loop gt gt gt while 1 scene x raw_input Enter a number or 0 to quit are if x 0 Pee break aiani else ae print x Use continue to skip the rest of the loop and to go to the next iteration 4 17 PROGRAMMING TECHNIQUES gt gt gt load 10 gt gt gt length 3 gt gt gt while load lt 1E6 Continue jumps up here load load length if load lt 0 continue Do not print if negative print load for Use a sequence to control the start and the end of for loops The range function is an easy way to create a sequence gt gt gt for i in range 5 print i 0 1 2 3 4 4 6 Programming techniques The following sections introduce you to some of the techniques you will need to program with Python The following topics are covered e Creating functions Section 4 6 1 e Using dictionaries Section 4 6 2 e Reading and writing from files Section 4 6 3 e Error handling Section 4 6 4 e Functions and modules Section 4 6 5 e
131. are listed in the following order Assembly Part ElemType MeshEdge MeshElement MeshFace MeshNode MeshStats Within each object description the commands are listed in the following order Constructors in alphabetical order 10 2 Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE Methods in alphabetical order Members e Some methods are not associated with an object and appear at the end of a chapter for example the evaluateMaterial method appears at the end of Chapter 28 Material commands of the Abaqus Scripting Reference Manual 10 3 2 Access The description of each object in the Abaqus Scripting Reference Manual begins with a section that describes how you access an instance of the object The following is the access description for the Part object odb parts name The access description specifies where instances of the object are located in the data model The Part object can accordingly be accessed as odb PartContainer partCon odb parts odb Part part partCon PART 1 1 The Access description for the FieldOutput object is odb steps name frames i fieldOutputs name The following statements show how you use the object described by this Access description odb StepContainer stepCon odb steps odb Step step stepCon Side load odb SequenceFrame frameSeq steps frames odb Frame lastFrame frameSeq Get frameSeq Size
132. ariable around the circumference of a given elbow element or 2 Ovalization of a given elbow element The program creates either an ASCII file containing X Y data or a new output database file that can be viewed using Abaqus CAE 10 81 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE To use option 2 you must ensure that the integration point coordinates COORD are written to the output database For option 1 the X data are data for the distance around the circumference of the elbow element measured along the middle surface and the Y data are data for the output variable For option 2 the X Y data are the current coordinates of the middle surface integration points around the circumference of the elbow element projected to a local coordinate system in the plane of the deformed cross section The origin of the local system coincides with the center of the cross section the plane of the deformed cross section is defined as the plane that contains the center of the cross section You should specify the name of the output database during program execution The program prompts for additional information depending on the option that was chosen this information includes the following e Your choice for storing results ASCII file or a new output database e File name based on the above choice e The postprocessing option 1 or 2 e The part name e The step name e The frame number e The element output variable option 1 onl
133. ase from the Abaqus Python prompt For example THE Abaqus OBJECT MODEL abaqus python gt gt gt from odbAccess import gt gt gt myOdb openOdb viewer tutorial odb gt gt gt p myOdb parts Tab gt gt gt p myOdb parts Part 1 6 1 3 The Model object model The Model object contains many objects Figure 6 6 and Figure 6 7 show the most commonly used objects that are contained in the Part and RootAssembly models pi arts p gE PaF features datums cells faces edges vertices Container IH Singular object elements nodes referencePoints sets reinforcements Figure 6 6 The Part object model The Job object is separate from the Model object The object model for the Job object is straightforward the Job object owns no other objects The Job object refers to a Model object but is not owned by the Model object 6 1 4 Using the object model Object model figures such as Figure 6 4 provide important information to the Abaqus Scripting Interface programmer 5 THE Abaqus OBJECT MODEL models features datums i sets Container surfaces I Singular object instances L pma datums cells faces edges vertices elements nodes referencePoints sets Figure 6 7 The RootAssembly object model e The object model describes the relationships between objects For example in object oriented programming terms a geometry object such as a Cell Face Edge or Vertex object is said
134. at indicates whether the input file will be written with parts and assemblies The type of the noPartsInputFile member is lt type AbaqusBoolean gt Abaqus recommends that you use the Python Boolean in your scripts and that you convert existing scripts to use the Python Boolean The value of a Boolean argument can appear to be ambiguous for example newModel mdb ModelFromInputFile name beamTutorial inputFileName Deform newModel setValues noPartsInputFile False print newModel noPartsInputFile OFF Because of this ambiguity you should test a Boolean for a positive or negative value as opposed to comparing it to a specific value like 0 OFF or False For example the following statements show how you should test the value of a Boolean member if newModel noPartsInputFile print Input file will be written without parts and assemblies else print Input file will be written with parts and assemblies 5 3 3 Repositories Repositories are containers that store a particular type of object for example the steps repository contains all the steps defined in the model A repository maps to a set of information and is similar to a Python dictionary for more information see Using dictionaries Section 4 6 2 However only a constructor can add an object to a repository In addition all the objects in a repository are of the same type For example the following repository contains all the models in the model
135. ates a base solid extrude feature inmyPart by extruding mySketch through a depth of 20 0 myViewport session Viewport name Viewport for Model A origin 20 20 width 150 height 100 This statement creates a new viewport named Viewport for Model Ain session The new viewport is assigned to the variable myViewport The origin of the viewport is at 20 20 and it has a width of 150 and a height of 100 READING FROM AN OUTPUT DATABASE myViewport setValues displayedObject myPart This statement tells Abaqus to display the new part myPart in the new viewport myViewport myViewport partDisplayOptions setValues renderStyle SHADED This statement sets the render style of the part display options in myViewport to shaded As a result myPart appears in the shaded render style 3 2 Reading from an output database The second example shows how you can use the Abaqus Scripting Interface to read an output database manipulate the data and display the results using the Visualization module in Abaqus CAE The Abaqus Scripting Interface allows you to display the data even though you have not written it back to an output database The script does the following Opens the tutorial output database Creates variables that refer to the first and second steps in the output database Creates variables that refer to the last frame of the first and second steps Creates variables that refer to the displacement field output in the last frame
136. ation on the environment file see Using the Abaqus environment settings Section 3 3 1 of the Abaqus Analysis User s Manual and Chapter 4 Customizing the Abaqus environment of the Abaqus Installation and Licensing Guide 6 34 Part Ill The Abaqus Python development environment This section describes the Abaqus Python development environment PDE The Abaqus PDE provides a simple interface that you can use to develop create edit test and debug Python scripts The Abaqus PDE is primarily intended for use with Abaqus CAE user interface GUI and kernel scripts including plug ins but you can also use it to work on scripts that function independently from Abaqus CAE The following topic is covered e Chapter 7 Using the Abaqus Python development environment 7 AN OVERVIEW OF THE Abaqus PYTHON DEVELOPMENT ENVIRONMENT Using the Abaqus Python development environment The Abaqus Python development environment PDE is an application in which you can create edit test and debug Python scripts 7 1 An overview of the Abaqus Python development environment The Abaqus PDE is a separate application that you can access from within Abaqus CAE or launch independently to work on Python scripts It is intended primarily for use with scripts that use the Abaqus CAE graphical user interface GUI or kernel commands including plug ins but you can also use it to work on scripts that are unrelated to Abaqus Th
137. ault step argument is 1 The arguments must be integers gt gt gt range 2 8 2 3 4 5 6 7 gt gt gt range 4 0 1 2 3 gt gt gt range 1 8 2 1 3 5 7 Convert a sequence type Convert a sequence to a list or a tuple gt gt gt myString noise gt gt gt myList list myString Convert a string to a list gt gt gt myList 0 p gt gt gt myList p ho it s e gt gt gt myTuple tuple myString Convert a string to a tuple gt gt gt print myTuple n o it s 1e 4 14 THE BASICS OF PYTHON 4 5 6 Python None Python defines a special object called the None object or Python None that represents an empty value The None object is returned by functions and methods that do not have a return value The None object has no value and prints as None For example gt gt gt a 1 3 7 5 gt gt gt print a sort None gt gt gt import sys gt gt gt X sysS path append gt gt gt print x None 4 5 7 Continuation lines and comments You can continue a statement on the following line if you break the statement between a set of or delimiters For example look at the tuple that was used in Creating a part Section 3 1 to assign the coordinates of the vertices to a variable xyCoordsOuter 10 30 10 30 40 30 30 30 20 10 20 10 30 30 40 30 10 30 If a statement br
138. ave command see save Section 60 1 4 of the Abaqus Scripting Reference Manual 10 11 2 Writing model data To define the geometry of your model you first create the parts that are used by the model and then you add nodes and elements to the parts You then define the assembly by creating instances of the parts If the output database already contains results data you should not change the geometry of the model This is to ensure that the results remain synchronized with the model 10 40 WRITING TO AN OUTPUT DATABASE Part If the part was created by Abaqus CAE the description of the native Abaqus CAE geometry is stored in the model database but it is not stored in the output database A part is stored in an output database as a collection of nodes elements surfaces and sets You use the Part constructor to add a part to the Odb object You can specify the type of the part however only DEFORMABLE BODY is currently supported For example odb Part amp partili odb Part part 1 odb Enum THREE D odb Enum DEFORMABLE BODY For a full description of the Part constructor see OdbPart object Section 60 21 of the Abaqus Scripting Reference Manual The new Part object is empty and does not contain geometry After you create the Part object you then add nodes and elements You use the addNodes method to add nodes by defining node labels and coordinates You can also define an optional node set For example odb Sequenc
139. aximum von Mises stress s is f in element d region maxMises maxElem print Location frame d step s maxFrame maxStep else print Stress output is not available in the output database s n odb name Close the output database before exiting the program odb close name main odbName None elsetName None argList argv argc len argList i 0 while i lt argc if argList i 2 o i 1 name argList i 9 47 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE odbName rightTrim name odb elif argList i 2 e i 1 elsetName argList i elif argList i 2 h print doc exit 0 i 1 if not odbName print ERROR output database name is not provided print doc exit 1 getMaxMises odbName elsetName 9 10 2 Creating an output database The following example illustrates how you can use the Abaqus Scripting Interface commands to do the following 1 Create a new output database 2 Add model data 3 Add field data 4 Add history data 5 Read history data 6 Save the output database Use the following command to retrieve the example script abaqus fetch job odbWrite odbWrite py Script to create an output database and add model field and history data The script also reads history data performs an operation on the data and writes the result back to the output database usage abaqus python odbWrite py
140. ay the repository keys of the sections in an output database allSections odb sections for sectionName in allSections keys print Section Name sectionName The Section object can be one of the various section types The type command provides information on the section type For example to determine whether a section is of type homogeneous solid section and to print it s thickness and associated material name for mySection in allSections values if type mySection HomogeneousSolidSectionType print material name mySection material print thickness mySection thickness Similarily to access the beam profile repository allProfiles odb profiles values numProfiles len allProfiles print Total Number of profiles in the ODB d numProfiles 9 13 READING FROM AN OUTPUT DATABASE The Profile object can be one of the various profile types The type command provides information on the profile type For example to output the radius of all circular profiles in the odb for myProfile in allProfiles if type myProfile CircularProfileType print profile name s radius 8 3f myProfile name myProfile r Section assignments Section assignments are stored in the odbSectionAssignmentArray repository under the OdbAssembly object All elements in an Abaqus analysis need to be associated with section and material properties Section assignments provide the relationship between el
141. b steps odb StepRepositoryIT iter stepCon for iter first iter isDone iter next cout lt lt step name lt lt iter currentKey CStr lt lt endl const odb Step amp step iter currentValue cout lt lt step description lt lt step description CStr cout lt lt endl 10 18 READING FROM AN OUTPUT DATABASE 10 10 Reading from an output database The following sections describe how you use Abaqus C API commands to read data from an output database The following topics are covered e The Abaqus CAE Visualization module tutorial output database Section 10 10 1 e Making the Odb commands available Section 10 10 2 e Opening an output database Section 10 10 3 e Reading model data Section 10 10 4 e Reading results data Section 10 10 5 e Reading field output data Section 10 10 6 e Using bulk data access to an output database Section 10 10 7 e Using regions to read a subset of field output data Section 10 10 8 e Reading history output data Section 10 10 9 e An example of reading field data from an output database Section 10 10 10 10 10 1 The Abaqus CAE Visualization module tutorial output database The following sections describe how you can access the data in an output database Examples are included that refer to the Abaqus CAE Visualization module tutorial output database viewer tutorial odb This database is
142. baqus CAE session The Abaqus PDE and Abaqus CAE sessions are associated if you started them together from a command prompt or if you started the Abaqus PDE by selecting File Abaqus PDE in Abaqus CAE For more information on starting the Abaqus PDE see Starting the Abaqus Python development environment Section 7 2 1 To record a guiLog from Abaqus CAE 1 From the main menu bar in the Abaqus PDE select File New to create a new empty file in the main window Tip You can also click the New guiLog icon L to create anew guiLog file 2 Click the Start Recording icon O to begin recording actions from Abaqus CAE Abaqus writes the following two lines to begin the file from abaqusTester import import abaqusGui 3 Complete all the desired actions in the Abaqus CAE session to record them in the guiLog file Note When you record guiLog files do not use mouse button 2 to close the dialog box for a procedure Instead use the buttons in the dialog box to close it Using mouse button 2 adds multiple USING THE Abaqus PDE dialog box closing commands to the recorded gquiLog file Since only one command is needed to close the dialog the extra commands will result in an error when the recorded script is played 4 Click the Stop Recording icon to stop recording 5 Use standard text editing techniques to edit the file in the main window Additional editing tools are available in the Edit menu for more information see Editi
143. bed in Acoustic shock and coupled acoustic structural analysis Section 6 10 1 of the Abaqus Analysis User s Manual and Infinite elements Section 27 3 1 of the Abaqus Analysis User s Manual The script writes the acoustic far field pressure values to an output database and you can use Abaqus CAE to view the far field results The far field pressure is defined as 1 li jj ike eC ie pran where p r is the acoustic pressure at a distance r from the reference point k is the wave number and pran is the acoustic far field pressure The acoustic pressure decibel value is defined as _ PRMS PORGB 20 log aan _ POR PRMS gt V2 3 where POR is the magnitude of the acoustic pressure at a point prms is the root mean square acoustic pressure and dBRef is the decibel reference value given as user input The far field pressure decibel value is defined in the same manner as PORdB using the same reference value dB Ref Note If dBRef 20uPa in SI units PORdB corresponds to dBS PL The script also calculates the far field acoustic intensity which is defined as 2 INTENrar Hiss px c where prusrar 1s the far field rms pressure p is the fluid density and c is the speed of sound in the medium Before you execute the script you must run a direct solution steady state dynamics acoustics analysis that includes three dimensional acoustic infinite elements ACIN3D3 ACIN3D4 ACIN3D6 and ACIN3D8 In
144. ber of load cases The following operators consider a list of fields and perform the envelope calculation odb SequenceFieldOutput flds maxEnvelope odb SequenceFieldOutput amp fields odb SequenceFieldOutput flds minEnvelope odb SequenceFieldOutput amp fields odb SequenceFieldOutput flds 10 55 5 COMPUTATIONS WITH Abaqus RESULTS maxEnvelope odb_SequenceFieldOutput amp fields odb Enum odb InvariantEnum invariant odb SequenceFieldOutput flds minEnvelope odb_SequenceFieldOutput amp fields odb Enum odb InvariantEnum invariant odb SequenceFieldOutput flds maxEnvelope odb SequenceFieldOutput amp fields const odb String amp componentLabel odb SequenceFieldOutput flds minEnvelope odb SequenceFieldOutput amp fields const odb String amp componentLabel The envelope commands return two FieldOutput objects e The first object contains the requested extreme values e The second object contains the indices of the fields for which the extreme values were found The indices derive from the order in which you supplied the fields to the command The optional invariant argument is a odb_Enum odb_DataTypeEnum specifying the invariant to be used when comparing vectors or tensors The optional componentLabel argument is an odb_ String specifying the component of the vector or tensor to be used for selecting the extreme value The following rules apply to envelope calculations e Abaqus compares the v
145. bject The FieldOutput object has two members fieldValue and fieldLocation The object model translates directly to the structure of an Abaqus C API command For example the following command refers to a Frame object in the sequence of frames contained in an OdbStep object odb steps 10 hz frames 3 Similarly the following command refers to the sequence of field data contained in a FieldOutput object odb steps 10 hz frames get 3 10 5 OBJECT MODEL FOR THE OUTPUT DATABASE odb parts Container aeee IH Singular object materials Model Data steps frames L fieldOutputs historyRegions i historyOutputs Results Data Figure 10 1 The output database object model fieldoOutputs U values 47 You use commands to access objects by stepping through the hierarchy of objects in the object model The Access Path and Prototype descriptions in Chapter 60 Odb commands of the Abaqus Scripting Reference Manual describe the interface definition of the command The interface definition of the command reflects the hierarchy of objects in the object model 10 5 Object model for the output database An output database generated from an Abaqus analysis contains both model and results data as shown in Figure 10 1 Model data Model data describe the parts and part instances that make up the root assembly for example nodal coordinates set definitions and element types Model data are explained
146. bject oriented programming to understand the terms used in this manual The following is a brief introduction to the basic concepts behind object oriented programming Traditional procedural languages such as FORTRAN and C are based around functions or subroutines that perform actions A typical example is a subroutine that calculates the geometric center of a planar part given the coordinates of each vertex In contrast object oriented programming languages such as Python and C are based around objects An object encapsulates some data and functions that are used to manipulate those data The data encapsulated by an object are called the members of the object The functions that manipulate the data are called methods An object can be modeled from a real world object such as a tire or an object can be modeled from something more abstract such as an array of nodes For example the data or members encapsulated by a tire object are its diameter width aspect ratio and price The functions or methods encapsulated by the tire object calculate how the tire deforms under load and how it wears during use Members and methods can be shared by more than one type of object for example a shock absorber has a price member and a deformation method Classes are an important concept in object oriented programming Classes are defined by the programmer and a class defines members and the methods that operate on those members An object is an instance
147. box The dialogTitle argument is an optional string that appears in the title bar of the dialog box If the user clicks Cancel the get Inputs method returns a sequence of None objects You can check the first value in the sequence to determine if the user clicked Cancel for example 6 24 INTERACTING WITH Abaqus Standard Abaqus Explicit AND Abaqus CFD fields Density Youngs modulus density modulus getInputs fields Material properties if density None print User pressed Cancel 6 7 3 Requesting a warning reply from the user The getWarningReply function displays a warning dialog box in the center of the main window and the user clicks on one of the standard reply buttons in the dialog box The clicked button value is returned to the executing script For more information see getWarningReply Section 52 5 3 of the Abaqus Scripting Reference Manual The following example illustrates the use of the getWarningRep1 y function from abaqus import getWarningReply YES NO reply getWarningReply message Okay to continue buttons YES NO if reply YES print YES clicked elif reply NO print NO clicked The following figure shows the dialog box that appears when this script is executed L Abaqus CAE x A Okay to continue 6 8 Interacting with Abaqus Standard Abaqus Explicit and Abaqus CFD The Job commands include methods that allow you to submit jobs to Abaqus Standard
148. bset method to read only the data corresponding to that region Typically you will be reading data from a region that refers to anode set or an element set For example the following statements create a variable called center that refers to the node set PUNCH at the center of the hemispherical punch In a previous section you created the displacement variable that refers to the displacement of the entire model in the final frame of the first step Now you use the getSubset command to get the displacement for only the center region center odb rootAssembly instances PART 1 1 nodeSets PUNCH centerDisplacement displacement getSubset region center centerValues centerDisplacement values for v in centerValues print v nodeLabel v data The resulting output is 1000 array 0 0000 76 4555 d 9 18 READING FROM AN OUTPUT DATABASE The arguments to getSubset are a region an element type a position or section point data The following is a second example that uses an element set to define the region and generates formatted output For more information on tuples the len function and the range function see Sequences Section 4 5 4 and Sequence operations Section 4 5 5 topCenter odb rootAssembly instances PART 1 1 elementSets CENT stressField odb steps Step 2 frames 3 fieldOutputs S The following variable represents the stress at integration points for CAX4 elements from the
149. bulk access method This is especially true if the number of output locations you are accessing is smaller than the number of elements in a class Similarly the nonbulk access method may be faster if the number of nodes you are accessing is smaller than the number of nodes in an instance The nonbulk access method 10 33 a READING FROM AN OUTPUT DATABASE is also better suited for random access to an output database where successive output locations to be accessed may lie in completely different blocks 10 10 8 Using regions to read a subset of field output data After you have created an OdbSet object using model data you can use the getSubset method to read only the data corresponding to that region Typically you will be reading data from a region that refers to a node set or an element set For example the following statements create a variable called center that refers to the node set PUNCH at the center of the hemispherical punch In a previous section you created the displacement variable that refers to the displacement of the entire model in the final frame of the first step Now you use the getSubset command to get the displacement for only the center region odb Set amp center instance nodeSets PUNCH odb FieldOutput amp fieldU lastFrame fieldOutputs U odb FieldOutput centerDisp fieldU getSubset center const odb SequenceFieldValue amp centerValues centerDisp values const odb FieldValue val ce
150. ce Repository object instances Repository object name ASSEMBLY nodeSet Repository object nodeSets Repository object nodes OdbMeshNodeArray object sectionAssignments Sequence object surface Repository object surfaces Repository object sectionCategories solid lt STEEL gt SectionCategory object OBJECT MODEL FOR THE OUTPUT DATABASE sectorDefinition None steps Beamload OdbStep object userData annotations Repository object xyData Repository object xyDataObjects Repository object For more information see prettyPrint Section 51 1 4 of the Abaqus Scripting Reference Manual 9 3 2 Results data Results data describe the results of your analysis Abaqus organizes the analysis results in an output database into the following components Steps An Abaqus analysis contains a sequence of one or more analysis steps Each step is associated with an analysis procedure Frames Each step contains a sequence of frames where each increment of the analysis that resulted in output to the output database is called a frame Ina frequency or buckling analysis each eigenmode is stored as a separate frame Similarly in a steady state harmonic response analysis each frequency is stored as a separate frame Field output Field output is intended for infrequent requests for a large portion of the model and can be used to generate contou
151. cimal places gt gt gt print Vibration frequency 6 2 Displacement 66 2 freq x Vibration frequency 3 14 Displacement 7 23 The E operator specifies scientific notation and indicates the number of decimal places gt gt gt print Vibration frequency 6E Displacement 2E freq x Vibration frequency 3 142857E 00 Displacement 7 23E 00 The following list includes some additional useful printing operators e The flag indicates that a number should include a sign e The n escape sequence inserts a new line e The t escape sequence inserts a tab character For example gt gt gt print Vibration frequency 6E nDisplacement S 2E freq x Vibration frequency 3 142857E 00 Displacement 7 23E 00 4 5 9 Control blocks Python does not use a special character such as to signify the end of a control block such as an if statement Instead Python uses indentation to indicate the end of a control block You define the THE BASICS OF PYTHON indentation that governs a block When your script returns to the original indentation the block ends For example max 5 i 0 while i lt max square i 2 cube i 3 print i square cube i i 1 print Loop completed When you are using the Python interpreter from the Abaqus CAE command line interface or if you are running Python from a local UNIX or Windows window the prompt changes to the ch
152. cript is running and moving between models modules parts and assemblies you can control the contents of specified viewports The contents can be one of the following e A part e The assembly e A sketch e Data from an output database e An X Y plot e Empty In some cases you will want to update the contents of the viewport as the model changes for example to illustrate how the assembly was partitioned prior to meshing However frequent updates to a viewport will slow down your script and you may want to leave the viewport empty until the script has completed Alternatively you can display an object that the script is not operating on for example you can display a part while the script operates on the assembly You use the following command to change the contents of a specified viewport session viewports name setvalues displayedObject object The displayedObject argument can be a Part Assembly Sketch Odb or XYPlot object or None If displayedObject None Abaqus CAE displays an empty viewport For more information see setValues Section 11 4 33 of the Abaqus Scripting Reference Manual SPECIFYING A REGION 6 6 Specifying a region Many of the commands used by the Abaqus Scripting Interface require a region argument For example e Load commands use the region argument to specify where the load is applied You apply a concentrated force to vertices you apply pressure to a face or an edge e Mesh commands
153. ctors both create section objects that are stored in the sections repository For more information see Abstract base type Section 6 1 5 For example the following script creates a blocks repository and the Block constructor creates a block object in the blocks repository from customKernel import CommandRegister class Block CommandRegister def init self name CommandRegister init self mdb customData Repository blocks Block block mdb customData Block name Block 1 print mdb customData blocks Block 1 name Block 1 5 6 5 Repository methods Repositories have several useful methods for querying their contents as shown in the following table Method Description keys Returns a list of the keys in the repository has _key Returns 1 if the key is found in the repository otherwise returns 0 values Returns a list of the objects in the repository items Returns a list of key value pairs in the repository changeKey fromName Changes the name of a key in the repository This method will toName also change the name attribute of the instance in the repository The following script illustrates some of these methods from customKernel import CommandRegister class Block CommandRegister def init self name CommandRegister init self mdb customData Repository blocks Block mdb customData Block name Block 1 mdb customData Block name Block 2 print The original repository
154. d 3 2 3 1 2 CREATING A PART import sketch import part myModel mdb Model name Model A mySketch myModel ConstrainedSketch name Sketch A sheetSize 200 0 xyCoordsInner 5 20 5 20 15 0 15 0 5 20 xyCoordsOuter 10 30 10 30 40 30 30 30 20 10 20 10 30 30 40 30 10 30 for i in range len xyCoordsInner 1 mySketch Line pointl xyCoordsInner i point2 xyCoordsInner i 1 for i in range len xyCoordsOuter 1 mySketch Line pointl xyCoordsOuter i point2 xyCoordsOuter i 1 myPart myModel Part name Part A dimensionality THREE D type DEFORMABLE BODY myPart BaseSolidExtrude sketch mySketch depth 20 0 myViewport session Viewport name Viewport for Model A origin 10 10 width 150 height 100 myViewport setValues displayedObject myPart myViewport partDisplay setValues renderStyle SHADED How does the script work This section explains each portion of the example script from abaqus import CREATING A PART This statement makes the basic Abaqus objects accessible to the script It also provides access to a default model database using the variable named mdb The statement from abaqusConstants import makes the Symbolic Constants defined by the Abaqus Scripting Interface available to the script import sketch import part These statements provide access to the objects related to sketches and parts sketch
155. d or member to this description when you are writing a script Similarly you use the Path description provided with each constructor in the Abaqus Scripting Reference Manual to determine the path to the constructor 5 4 3 Object oriented programming and the Abaqus Scripting Interface a summary After you create an object you then use methods of the objects to enter or to modify the data associated with the object For example you use the addNodes and addElements methods of the Part object to add nodes and elements respectively Similarly you use the addData method of the FieldOutput object to add field output data The following list summarizes some of the concepts behind object oriented programming and how they relate to the Abaqus Scripting Interface e An object encapsulates some data and functions that are used to manipulate those data e The data encapsulated by an object are called the members of the object e The functions that manipulate the data are called methods e The Abaqus Scripting Interface uses the convention that the name of a type of object begins with an uppercase character for example a Viewport object e A method that creates an object is called a constructor The Abaqus Scripting Interface uses the convention that constructors begin with an uppercase character In contrast methods that operate on an object begin with a lowercase character e After you create an object you then use methods of the object to enter or
156. d tries to partition the same edge pl The name of the journal namespace is journaling The statement from abaqus import described in Executing scripts Section 5 1 imports the mdb variable into the script namespace You can then use the mdb variable in your scripts to access the 6 16 Figure 6 9 The Abaqus Scripting Interface and the Abaqus CAE kernel pl PartitionEdgeByParam edges edges parameter 0 5 pl PartitionEdgeByParam edges edges parameter 0 75 NameError SPECIFYING WHAT IS DISPLAYED IN THE VIEWPORT objects in the object model Although variables in one namespace are not visible to the other namespace the object repositories are now available in both As a result an object created in one namespace can still be referred to in another namespace if you use its full path Mdb models Model A and its repository key For example although the variable p1 in the above statement cannot be accessed from the script namespace you can still use the command line interface to access the part to which p1 referred myPart mdb models Model A parts Part 3D A The model and part repositories are available in both the journal and script namespaces You can also create your own variable p1 from the command line interface or from a script pl myPart The variable p1 in the script namespace is independent of the variable p1 in the journal namespace Specifying what is displayed in the viewport While a s
157. data ulSquaredFromStepl power ulFromStepl historyOutputs U1 2 0 ulSquaredFromStep2 power ulFromStep2 historyOutputs U1 2 0 Add the squared displacement to the two steps houtputSteplsumU1l hRegionStep1 HistoryOutput name squareUl description Square of displacements type SCALAR hoOutputSteplsumU1 addData data ulSquaredFromStep1 data hoOutputStep2sumU1 hRegionStep2 HistoryOutput name squareUl description Square of displacements type SCALAR hoOutputStep2sumU1 addData data ulSquaredFromStep2 data Save the results in the output database Use the Visualization module of Abaqus CAE to view the contents of the output database odb save odb close name main createODB 9 54 9 10 3 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE An Abaqus Scripting Interface version of FPERT A FORTRAN program that reads the Abaqus results file and creates a deformed mesh from the original coordinate data and eigenvectors is described in Creation of a perturbed mesh from original coordinate data and eigenvectors FPERT Section 14 1 4 of the Abaqus Example Problems Manual This example illustrates an Abaqus Scripting Interface script that reads an output database and performs similar calculations The command line arguments provide the following odbName The output database file name modeList A list of eigenmodes to use in the perturbation weightList
158. database mdb models In turn the following repository contains all the parts in the model Model 1 mdb models Model 1 parts As with dictionaries you can refer to an object in a repository using its key The key is typically the name you provided in the constructor command when the object was created For example the Viewport constructor creates a new Viewport object in the viewports repository session Viewport name Side view origin 10 10 width 50 height 50 OBJECT ORIENTED PROGRAMMING AND THE Abaqus SCRIPTING INTERFACE The key to this new Viewport object in the viewports repository is Side view You use this key to access this particular Viewport object For example session viewports Side view viewportAnnotationOptions setValues legend OFF title OFF You can make your scripts more readable by assigning a variable to an object in a repository For example you could rewrite the previous statement after assigning the Viewport object to the variable myViewport myViewport session viewports Side view myViewport viewportAnnotationOptions setValues legend OFF title OFF In general if the user can create the object its repository key is a string In some cases Abaqus CAE creates an object and the key can be a string an integer or a SymbolicConstant As with dictionaries you can use the keys method to access the repository keys gt gt gt session Viewport name Side view gt gt gt sess
159. database the following is the access description for the HistoryRegion object import odbAccess session odbs name steps name historyRegions name 5 Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE The first line indicates that Abaqus CAE imported the odbAccess module to make the Odb objects methods and members available to your Abaqus Scripting Interface script The second line indicates how your script can access HistoryRegion objects from a particular step The Access description for the FieldOutput object is session odbs name steps name frames i fieldOutputs name The following statements show how you use the object described by this Access description sideLoadStep session odbs Forming loads steps Side load lastFrame sideLoadStep frames 1 stressData lastFrame fieldOutputs S integrationPointData stressData getSubset position INTEGRATION POINT invariantsData stressData validiInvariants e The next to last line shows the getSubset method of the FieldOutput object e The last line shows the validInvariants member of the FieldOutput object 5 2 3 Path A method that creates an object is called a constructor The Abaqus Scripting Interface uses the convention that constructors begin with an uppercase character In contrast methods that operate on an object begin with a lowercase character The description of each constructor in the Abaqus Scripting Reference Manual includes a path to
160. dbDisplay display setValues plotState CONTOURS ON DEF The final statement sets the plot state to display a contour plot on the deformed model shape 3 10 3 3 SUMMARY Summary The examples illustrate how a script can operate on a model in a model database or on the data stored in an output database The details of the commands in the examples are described in later sections however you should note the following You can run a script from the Abaqus CAE startup screen when you start a session After a session has started you can run a script from the File Run Script menu or from the command line interface A script is a sequence of commands stored in ASCII format and can be edited with a standard text editor A set of example scripts are provided with Abaqus Use the abaqus fetch command to retrieve a script and any associated files You must use the import statement to make the required set of Abaqus Scripting Interface commands available For example the statement import part provides the commands that create and operate on parts A command that creates something an object in object oriented programming terms is called a constructor and starts with an uppercase character For example the following statement uses the Model constructor to create a model object myModel mdb Model name Model A The model object created is mdb models Model A You can use a variable to refer to an object Variables make
161. ddition you can supply an optional assembly element set argument from the command line in which case the script searches only the element set for the maximum value of von Mises stress The following illustrates how you can run the example script from the system prompt The script will search the element set ALL ELEMENTS in the viewer tutorial output database for the maximum value of von Mises stress abaqus python odbMaxMises py odb viewer tutorial odb elset ALL ELEMENTS Note Ifa command line argument is a String that contains spaces some systems will interpret the String correctly only if it is enclosed in double quotation marks For example ALL ELEMENTS You can also run the example with only the help parameter for a summary of the usage Use the following commands to retrieve the example script and the viewer tutorial output database abaqus fetch job odbMaxMises py abaqus fetch job viewer tutorial odbMaxMises py Code to determine the location and value of the maximum von mises stress in an output database Usage abaqus python odbMaxMises py odb odbName elset optional elsetName Requirements 1 odb Name of the output database 2 elset Name of the assembly level element set Search will be done only for element belonging to this set If this parameter is not provided search will be performed over the entire model 3 help Print usage 9 45 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABAS
162. dimension The statement will look similar to the following d 0 setValues value 60 0 INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS 7 The example script skewExample py contains a similar statement that modifies the angular dimension of the plate The index of the angular dimension in your model must be the same as the index in the example script If the indices are not the same you must edit the example script and enter the correct indices d 0 setValues value angle Save the model database and name it skew Abaqus CAE saves the model database in a file called skew cae The example script opens this model database and parameterizes the model it contains 8 3 3 Using a script to perform a parametric study The following shows the contents of the script skewExample py The parametric study does the following Opens the model database and creates variables that refer to the part the assembly and the part instance stored in Model 1 Creates variables that refer to the four faces and the nine vertices in the instance of the planar shell part Skews the plate by modifying the angular dimension in the sketch of the base feature Defines the logical corners of the four faces and generates a structured mesh Runs the analysis for a range of angles using two element types for each angle Calculates the maximum moment and displacement at the center of the shell Displays X Y plots in separate viewports of the
163. e Use the following command to retrieve the example script abaqus fetch job simpleMonitor To execute the script do the following e From the Abaqus CAE command line interface type from simpleMonitor import printMessages e Submit an analysis job as usual e To start printing the messages type printMessages ON from the Abaqus CAE command line interface e To stop printing the messages type printMessages OFF from the Abaqus CAE command line interface simpleMonitor py Print all messages issued during an Abaqus analysis to the Abaqus CAE command line interface nunn from abaqus import from abaqusConstants import from jobMessage import ANY JOB ANY MESSAGE TYPE def simpleCB jobName messageType data userData nunun This callback prints out all the members of the data objects 6 28 INTERACTING WITH Abaqus Standard Abaqus Explicit AND Abaqus CFD nun format 18s 18s s print Message type s messageType print print data members print format member type value members dir data for member in members memberValue getattr data member memberType type memberValue name _ print format member memberType memberValue def printMessages start ON Switch message printing ON or OFF if start monitorManager addMessageCallback ANY JOB ANY MESSAGE TYPE simpleCB None else monitorManager removeMessageCallback ANY JOB ANY MESSAGE TYPE simpleCB None 6 8 2
164. e a problem This example uses Abaqus Scripting Interface commands to evaluate the sensitivity of the shell elements in Abaqus to skew distortion when they are used as thin plates Further details can be found in Skew sensitivity of shell elements Section 2 3 4 of the Abaqus Benchmarks Manual The problem investigates the effects on the accuracy of the bending moment computed at the center of a shell using e different shell formulations and e at different angles Figure 8 2 illustrates the basic geometry of the simply supported skew plate with a uniform distributed load hy x y z displacements constrained on boundary 1 0m Figure 8 2 A 4 x 4 quadrilateral mesh of the plate The plate is loaded by a uniform pressure of 1 0 x 10 MPa applied over the entire surface The edges of the plate are all simply supported The analysis is performed for five different values of the skew angle 6 90 80 60 40 and 30 The analysis is performed for two different quadrilateral elements S4 and S8R The example is divided into two scripts The controlling script skewExample py imports skewExampleUtils py Use the fetch utility to retrieve the scripts abaqus fetch job skewExample abaqus fetch job skewExampleUtils INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS The following topics are covered e Creating the model to analyze Section 8 3 1 e Changing the skew angle Section 8 3 2 e
165. e Abaqus PDE also enables you to set breakpoints to pause script execution at a particular line in any Python script including an Abaqus plug in Figure 7 1 shows a guiLog file in the Abaqus PDE The script creates an extruded solid rectangular part named box and was recorded by logging the actions to complete the task in the Abaqus CAE user interface The PDE controls allow you to complete the following tasks Open guiLog py and other Python scripts Designate an open file or open another file as the main file for testing Open recently used files including modules called by the main file Edit scripts Reload modules after editing a plug in Record guiLog files from Abaqus CAE Run scripts that use the Abaqus CAE user interface the Abaqus scripting commands or general Python commands Add or ignore breakpoints in a script Add a breakpoint in any Python code executed in Abaqus CAE such as plug ins Add a delay between executing steps Step through scripts trace the execution including plug in modules and custom startup modules Change options for recording guiLog scripts and animating highlighting traced files The following sections contain detailed information about each of the functions in the PDE Abaqus PDE basics Section 7 2 Using the Abaqus PDE Section 7 3 Abaqus PDE BASICS Main file open Status recording Break tools Add delay and playback tools Execution Display main file File too
166. e FILLED The following statements show how the example script can be modified to use the callback function After the first statement is executed the callback function responds to all messages from the job named Deform The final two statements create the job and submit it for analysis the example script has now finished executing When the job is complete the callback function opens the resulting output database and displays a contour plot myJobName Deform monitorManager addMessageCallback jobName myJobName messageType ANY MESSAGE TYPE callback onMessage userData myViewport 6 31 5 USING Abaqus SCRIPTING INTERFACE COMMANDS IN YOUR ENVIRONMENT FILE myJob mdb Job name myJobName model Beam description jobDescription myJob submit End of example script You can use the removeMessageCallback method at the end of the callback function to remove it from the system The arguments to the removeMessageCallback method must be identical to the arguments to the corresponding addMessageCallback command that set up the callback function 6 9 Using Abaqus Scripting Interface commands in your environment file The Abaqus environment file abaqus_v6 env is read by Abaqus CAE when you start a session The environment file can contain Abaqus Scripting Interface commands The following is an example environment file scratch c temp memory 256mb def onCaeGraphicsStartup Graphics preferences s
167. e addNodes command see addNodes Section 33 20 4 of the Abaqus Scripting Reference Manual After you have created nodes you can use the NodeSet FromNodeLabels constructor to create a node set from the node labels For more information see NodeSetFromNodeLabels Section 33 24 2 of the Abaqus Scripting Reference Manual Similarly you use the addElements method to add elements to the part using a sequence of element labels element connectivity and element type You can also define an optional element set and an optional section category For example Set up the section categories sCat odb SectionCategory name S5 description Five Layered Shell spBot sCat SectionPoint number 1 description Bottom spMid sCat SectionPoint number 3 description Middle spTop sCat SectionPoint number 5 description Top elementData 1 1 2 3 4 2 6 5 2 1 partl addElements elementData elementData type S4 elementSetName eset 1 sectionCategory sCat For a full description of the addElements command see addElements Section 33 20 2 of the Abaqus Scripting Reference Manual The RootAssembly object The root assembly is created when you create the output database You access the RootAssembly object using the same syntax as that used for reading from an output database odb rootAssembly You can create both instances and regions on the RootAssembly object Part instances You use the Instanc
168. e constructor to create part instances of the parts you have already defined using the Part constructor For example 9 28 WRITING TO AN OUTPUT DATABASE a odb rootAssembly instancel a Instance name part 1 1 object part1 You can also supply an optional local coordinate system that specifies the rotation and translation of the part instance You can add nodes and elements only to a part you cannot add elements and nodes to a part instance As a result you should create the nodes and elements that define the geometry of a part before you instance the part For a full description of the Instance command see OdbInstance object Section 33 16 of the Abaqus Scripting Reference Manual Regions Region commands are used to create sets from element labels node labels and element faces You can create a set on a part part instance or the root assembly Node and element labels are unique within an instance but not within the assembly As a result a set on the root assembly requires the names of the part instances associated with the nodes and elements You can also use region commands to create surfaces For example An element set on an instance eLabels 9 99 elementSet instancel ElementSetFromElementLabel1s name elsetA elementLabels eLabels A node set on the rootAssembly nodeLabels 5 11 instanceName part 1 1 nodeSet assembly NodeSetFromNodeLabel1s name nodesetRA instanceName nodeLabel1s
169. e following script combines many of the commands you have already seen and illustrates how you read model data and field output data from the output database used by the Abaqus CAE Visualization module tutorial Use the following commands to retrieve the example script and the tutorial output database abaqus fetch job odbRead 9 24 READING FROM AN OUTPUT DATABASE abaqus fetch job viewer tutorial odbRead py A script to read the Abaqus CAE Visualization module tutorial output database and read displacement data from the node at the center of the hemispherical punch from odbAccess import odb openOdb path viewer tutorial odb Create a variable that refers to the last frame of the first step lastFrame odb steps Step 1 frames 1 Create a variable that refers to the displacement U in the last frame of the first step displacement lastFrame fieldOutputs U Create a variable that refers to the node set PUNCH located at the center of the hemispherical punch The set is associated with the part instance PART 1 1 center odb rootAssembly instances PART 1 1 nodeSets PUNCH Create a variable that refers to the displacement of the node set in the last frame of the first step centerDisplacement displacement getSubset region center Finally print some field output data from each node in the node set a single node in this example for v in centerDisplacement val
170. e keys of each step in the repository for stepName in odb steps keys print stepName The resulting output is Step 1 Step 2 Step 3 Note An index of 0 in a sequence refers to the first value in the sequence and an index of 1 refers to the last value You can use the following syntax to refer to an individual item in a repository stepl odb steps values 0 print stepl name The resulting output is Step 1 Frames Each step contains a sequence of frames where each increment of the analysis or each mode in an eigenvalue analysis that resulted in output to the output database is called a frame The following statement assigns a variable to the last frame in the first step lastFrame odb steps Step 1 frames 1 9 5 6 Reading field output data Field output data are stored in the ieldOutputs repository under the OdbFrame object The key to the repository is the name of the variable The following statements list all the variables found in the last frame of the first step the statements use the variable last Frame that we defined previously for fieldName in lastFrame fieldOutputs keys print fieldName READING FROM AN OUTPUT DATABASE COPEN TARGET IMPACTOR CPRESS TARGET IMPACTOR CSHEAR1 TARGET IMPACTOR CSLIP1 TARGET IMPACTOR LE RF RM3 S U UR3 Different variables can be written to the output database at different frequencies As a result not all frames will contain all the field output vari
171. e runtime library path is typically set using the system environment variable LD LIBRARY PATH but the method used to set the path may vary depending on your operating system configuration The ABQodb library and several utility libraries resolve all the functions available in the interface to the output database as described in Link library location Section 10 7 2 At runtime these libraries depend on many of the underlying Abaqus libraries As a result if you do not define the correct runtime library path your application will not run 10 7 4 Header file location The header files required to compile a program that accesses the C interface are located in the following directories UNIX abaqus_dir include Windows abaqus_dir include where abaqus_dir is the name of the directory in which Abaqus is installed To determine the location of abaqus_dir at your site type abaqus whereami at an operating system prompt Only odb_API h must be included to access the C interface but the path to the header files must be provided during compilation 10 8 The Abaqus C API architecture This section describes the architecture of the Abaqus C interface to an output database The output database is an object oriented database which means that the data are held by objects C classes that have certain behavior C methods The methods of an object in the database allow access to and manipulation of the data held by the object
172. e system you must also retrieve the displacement field at the frame You must compute this displacement field for the whole model to ensure that the required displacement information is available The following rules apply to the transformation of results Beams truss and axisymmetric shell element results will not be transformed The component directions 1 2 and 3 of the transformed results will correspond to the system directions X Y and Z for rectangular coordinate systems R 6 and Z for cylindrical coordinate systems and R 6 and for spherical coordinate systems Note Stress results for three dimensional continuum elements transformed into a cylindrical system would have the hoop stress in 22 which is consistent with the coordinate system axis but inconsistent with the stress state for a three dimensional axisymmetric elements having hoop stress in 33 When you are transforming a tensor the location or integration point always takes into account the deformation The location of the coordinate system depends on the model as follows If the system is fixed the coordinate system is fixed If the system is model based you must supply a displacement field that determines the instantaneous location and orientation of the coordinate system Abaqus will perform transformations of tensor results for shells membranes and planar elements as rotations of results about the element normal at the element result location
173. e type For example to output the radius of all circular profiles in the odb odb ProfileContainerIT pcIT profileContainer for pcIT first pcIT isDone pcIT next const odb Profile amp myProfile pcIT currentValue if odb isA odb CircularProfile myProfile odb CircularProfile circularProfile odb dynamicCast odb CircularProfile myProfile cout lt lt profile name lt lt myProfile name CStr lt lt radius lt lt circularProfile r Section assignments Section assignments are stored in the sectionAssignments repository under the OdbAssembly object 10 27 READING FROM AN OUTPUT DATABASE All elements in an Abaqus analysis need to be associated with section and material properties Section assignments provide the relationship between elements in a part instance and their section properties The section properties include the associated material name To access the sectionAssignments repository from the PartInstance object odb InstanceRepository amp instanceRepository odb rootAssembly instances odb InstanceRepositoryIT instIT instanceRepository for instIT first instIT isDone instIT next const odb Instance amp instance instIT currentValue odb SequenceSectionAssignment sectionAssignmentSeq instance sectionAssignments int sects sectionAssignmentSeq size cout lt lt Instance lt lt instance name CStr lt lt endl for int s 0
174. eCylinderVolume 3 2 27 5 Here the arguments are called positional arguments because you are relying on their position in the function call to determine the variable to which they are assigned in the function radius followed by height The following is the same statement using keyword arguments gt gt gt volume calculateCylinderVolume radius 3 2 height 27 5 Keyword arguments make your code more readable In addition if you use keyword arguments you can enter the arguments in any order gt gt gt volume calculateCylinderVolume height 27 5 radius 3 2 You can define default values for an argument in a function definition For example the following sets the default value of radius to 0 5 and the default value of height to 1 0 gt gt gt from math import gt gt gt def calculateCylinderVolume radius 0 5 height 1 0 PROGRAMMING TECHNIQUES oie volume pi radius radius height ener return volume You can now call the function without providing all the arguments The function assigns the default value to any missing arguments gt gt gt volume calculateCylinderVolume height 27 5 It is good programming practice to use a documentation string that indicates the purpose of a function and the arguments expected A documentation string appears at the top of a function and is delimited by triple quotes You can use the _ doc __ method to obtain the documentation string from a function while runnin
175. eInt nodeLabels nodeLabels append 1 nodeLabels append 2 nodeLabels append 3 nodeLabels append 5 nodeLabels append 7 nodeLabels append 11 double c 6 3 2 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 1 0 2 0 0 0 1 0 odb SequenceSequenceFloat nodeCoor for int n 0 n lt nodeLabels size n odb SequenceFloat loc for int i 0 i lt 3 i loc append c n i nodeCoor append loc partl addNodes nodeLabels nodeCoor nodes 1 10 41 WRITING TO AN OUTPUT DATABASE For a full description of the addNodes command see addNodes Section 60 21 3 of the Abaqus Scripting Reference Manual Similarly you use the addElements method to add elements to the part using a sequence of element labels element connectivity and element type You can also define an optional element set and an optional section category For example odb SequenceiInt elLabels elLabels append 9 elLabels append 99 odb SequenceSequenceInt connect const int numNodePerEl 4 int conn 2 numNodePerEl 1 2 3 5 5 3 7 11 for int e 0 e lt elLabels size e odb _SequenceInt 1 for int i 0 i lt numNodePerEl i l append conn e i connect append 1 part1 addElements elLabels connect S4R s4 els shellCat For a full description of the addElements command see addElements Section 60 21 2 of the Abaqus Scripting Ref
176. each time For example executing the following statements could be very slow int numFrames stepl frames size for int n 0 n lt numFrames n odb Frame amp frame stepl frames n 10 60 IMPROVING THE EFFICIENCY OF YOUR SCRIPTS Creating a temporary variable to hold the frame repository provides the same functionality and speeds up the process odb SequenceFrame amp frameRepository stepl frames int numFrames frameRepository size for int n 0 n lt numFrames n odb Frame amp frame frameRepository n Such a potential loss of performance will not be a problem when accessing a load case frame Accessing a load case frame does not result in the creation of a frame repository and thus does not suffer from a corresponding loss of performance 10 14 3 Using references to objects Many functions return a reference to an object rather than an object Returning a reference is much more efficient because it avoids unnecessary memory operations To maintain the efficiency of references you should use the reference itself You should not assign the reference to a new object since assigning the reference to a new object creates a copy of the object that is denoted by the reference and invokes potentially expensive copy constructors For example odb Instance instance odb rootAssembly instances PART 1 1 const odb SequenceNode nodeSequence ose myInstance nodes In the above case a copy of
177. eaks at any other place you must include a character at the end of the line to indicate that it is continued on the next line For example distance mdb models Model 1 parts housing getDistance entityl nodel entity2 node2 When you are running Python from a local UNIX or Windows window the prompt changes to the characters to indicate that you are on a continuation line Comments in a Python script begin with the character and continue to the end of the line gt gt gt Define material constants gt gt gt modulus le6 Define Young s modulus 4 5 8 Printing variables using formatted output Python provides a print function that displays the value of a variable For example 4 15 THE BASICS OF PYTHON gt gt gt freq 22 0 7 0 gt gt gt X 7 234 gt gt gt print Vibration frequency freq Vibration frequency 3 14285714286 gt gt gt print Vibration frequency freq Displacement ssw Tp X Vibration frequency 3 142857114286 Displacement 7 234 The string modulus operator allows you to format your output The s operator in the following example converts the variables to strings gt gt gt print Vibration frequency s Displacement Q S freq x Vibration frequency 3 14285714286 Displacement 7 234 The operator specifies floating point notation and indicates the total number of characters to print and the number of de
178. ect oriented programming language Abaqus Scripting Interface scripts are Python scripts You can use the Abaqus Scripting Interface to do the following e Create and modify the components of an Abaqus model such as parts materials loads and steps e Create modify and submit Abaqus analysis jobs e Read from and write to an Abaqus output database e View the results of an analysis You use the Abaqus Scripting Interface to access the functionality of Abaqus CAE from scripts or programs The Visualization module of Abaqus CAE is also licensed separately as Abaqus Viewer therefore the Abaqus Scripting Interface can also be used to access the functionality of Abaqus Viewer Because the Abaqus Scripting Interface is a customized extension of standard Python further extension of Abaqus base types to create user defined classes is not allowed This section provides an introduction to the Abaqus Scripting Interface The following topics are covered e Chapter 1 An overview of the Abaqus Scripting User s Manual e Chapter 2 Introduction to the Abaqus Scripting Interface e Chapter 3 Simple examples AN OVERVIEW OF THE Abaqus SCRIPTING USER S MANUAL An overview of the Abaqus Scripting User s Manual The Abaqus Scripting User s Manual takes you through the process of understanding the Python programming language and the Abaqus Scripting Interface so that you can write your own programs It also describes how yo
179. ect using the following statement odb MaterialApi materialApi odb extendApi odb Enum odb MATERIAL materialApi Access the materials repository using the command odb MaterialContainer amp materialContainer materialApi materials odb MaterialContainerIT matIT materialContainer for matIT first matIT isDone matIT next cout lt lt Material Name lt lt matIT currentKey CStr lt lt endl const odb Material amp myMaterial matIT currentValue To print isotropic elastic material properties in a material object odb Elastic elastic myMaterial elastic if elastic hasValue if elastic type ISOTROPIC cout lt lt isotropic elastic behavior type lt lt elastic moduli CStr lt lt endl odb String tableHeader Youngs modulus Poisson s ratio if elastic temperatureDependency tableHeader append Temperature for int i 0 max elastic dependencies i lt max i tableHeader append field append i cout lt lt tableHeader CStr lt lt endl odb SequenceSequenceFloat table elastic table for int r 0 rows table size r lt rows r const odb SequenceFloat amp data table r for int c 0 cols data size c lt cols c cout lt lt data c lt lt a cout lt lt endl Some Material definitions have suboptions For example to access the smoothing type used for biaxial test data specified for a hype
180. eformed field variable you cannot specify an invariant or a component The default variable settings apply for each frame in the step For example the following statements use the deformation U as the default setting for both field variable and deformed field variable settings during a particular step stepl setDefaultField tensorField stepl setDefaultDeformedField vectorField You can set a different default field variable and deformed field variable for different steps 10 49 WRITING TO AN OUTPUT DATABASE 10 11 6 Writing history output data History output is output defined for a single point or for values calculated for a portion of the model as a whole such as energy Depending on the type of output expected the historyRegions repository contains data from one of the following e anode e an element or a location in an element e aregion Note History data from an analysis cannot contain multiple points The output from all history requests that relate to a specified point is collected in one HistoryRegion object You use the HistoryPoint constructor to create the point For example odb HistoryPoint hPoint1l instanceA elements 0 For a full description of the HistoryPoint command see HistoryPoint Section 60 10 1 of the Abaqus Scripting Reference Manual You then use the HistoryRegion constructor to create a HistoryRegion object odb HistoryRegion amp hrl stepl HistoryRegion ElHist output at e
181. eldOutput FieldValue and HistoryOutput objects are not supported e Multiplication and division are not supported between two vector objects nor between two tensor objects e The types in an expression must be compatible For example A vector cannot be added to a tensor A three dimensional surface tensor cannot be added to a three dimensional planar tensor INTEGRATION POINT data cannot be added to ELEMENT NODAL data e Ifthe fields in the expression were obtained using the getSubset method the same getSubset operations must have been applied in the same order to obtain each field e Arguments to the trigonometric functions must be in radians e Operations on tensors are performed in the local coordinate system if it is available Otherwise the global system is used Abaqus assumes that the local coordinate systems are consistent for operations involving more than one tensor e Operations between Field Value objects associated with different locations in the model are allowed only if the data types are the same If the locations in the model differ the FieldValue computed will not be associated with a location If the local coordinate systems of the FieldValue objects are 10 52 COMPUTATIONS WITH Abaqus RESULTS not the same the local coordinate systems of both fieldValues will be disregarded and the field Value computed will have no local coordinate system e The operations will not be performed on the conjugate data the
182. element set CENT field stressField getSubset region topCenter position INTEGRATION POINT elementType CAX4 fieldValues field values for v in fieldValues print Element label v elementLabel if v integrationPoint print Integration Point v integrationPoint else print For each tensor component for component in v data Print using a format The comma at the end of the print statement suppresses the carriage return print 10 5f component After each tuple has printed print a carriage return print The resulting output is Element label 1 Integration Point 1 S 0 01230 0 05658 0 00892 0 00015 Element label 1 Integration Point 2 S 0 01313 0 05659 0 00892 0 00106 Element label 1 Integration Point 3 9 19 a READING FROM AN OUTPUT DATABASE S 0 00619 0 05642 0 00892 0 00023 Element label 1 Integration Point 4 S 0 00697 0 05642 0 00892 0 00108 Element label 11 Integration Point 1 S 0 01281 0 05660 0 00897 0 00146 Element label 11 Integration Point 2 S 0 01183 0 05651 0 00897 0 00257 Element label 11 Integration Point 3 Possible values for the position argument to the getSubset command are INTEGRATION POINT e NODAL e ELEMENT NODAL e CENTROID If the requested field values are not found in the output database at the specified ELEMENT NODAL or CENTROID positions they are extrapolated from the field data at the INTEGRATIO
183. ember of the interaction objects 6 1 5 Abstract base type The Abaqus object model includes the concept of an abstract base type An abstract base type allows similar objects to share common attributes For example pressure and concentrated force are both kinds of loads Object oriented programmers call the relationship between pressure and load an is a relationship a pressure is a kind of load In this example Load is the name of the abstract base type In the type hierachy Pressure and ConcentratedForce types have a base type Load A Pressure is a Load In Figure 6 8 AnalysisStep and Step are both abstract base types In terms of the real world a static step is an analysis step and a static step is also a step In terms of the object model a StaticStep object is an AnalysisStep object and a StaticStep object is also a Step object Step InitialStep AnalysisStep StaticStep BuckleStep Figure 6 8 An example of the is a relationships between objects In contrast the object model figures described at the beginning of this section show what object oriented programmers call has a relationships between objects For example a session has a viewport repository and a model has a root assembly Abaqus uses the name of the abstract base type as the name of the repository that contains objects of similar types For example the StaticStep BuckleStep and FrequencyStep constructors all create objects in the steps rep
184. ement amp elementList instancel elements int elementListSize elementList size cout lt lt Element Connectivity Data lt lt endl cout lt lt Element Label constituent node labels lt lt endl int numNodes 0 for int e 0 e lt elementListSize e const odb Element element elementList el int elementLabel element label cout lt lt elementLabel lt lt odb String elementType element type const int const conn element connectivity numNodes for int j 0 j lt numNodes j cout lt lt lt lt conn jl cout lt lt endl ww Regions Regions in the output database are OdbSet objects Regions refer to the part and assembly sets stored in the output database A part set refers to elements or nodes in an individual part and appears in each instance of the part in the assembly An assembly set refers to the elements or nodes in part instances in the assembly A region can be one of the following e A node set e An element set e A surface For example the following statement displays the node sets in the OdbAssembly object cout lt lt Node set keys lt lt endl odb SetRepositoryIT setIter rootAssy nodeSets for setIter first setIter isDone setIter next cout lt lt setIter currentKey CStr lt lt endl The resulting output is Node set keys ALL NODES 10 22 READING FROM AN OUTPUT DATABASE The following statements display the node
185. ements in a part instance and their section properties The section properties include the associated material name To access the sectionAssignments repository from the PartInstance object instances odb rootAssembly instances for instance in instances values assignments instance sectionAssignments print Instance instance name for sa in assignments region sa region elements region elements print Section sa sectionName print Elements associated with this section for e in elements print label e label Analytical rigid surfaces Analytical rigid surfaces are defined under a OdbPart object or a OdbInstance object Each OdbPart or OdbInstance can have only one analytical rigid surface Rigid bodies Rigid bodies are stored in the odbRigidBodyArray The OdbPart object OdbInstance object and OdbAssembly object each have an odbRigidBodyArray Pretension sections Pretension sections are stored in odbPretensionSectionArray under the OdbAssembly object 9 14 READING FROM AN OUTPUT DATABASE 9 5 5 Reading results data The following list describes the objects in results data and the commands you use to read results data As with model data you will find it useful to use the keys method to determine the keys of the results data repositories Steps Steps are stored in the steps repository under the Odb object The key to the steps repository is the name of the step The following statements print out th
186. ements or nodes in an individual part and appears in each instance of the part in the assembly An assembly set refers to the elements or nodes in part instances in the assembly A region can be one of the following e A node set e An element set e A surface For example the following statement displays the node sets in the OdbAssembly object print Node sets odb rootAssembly nodeSets keys READING FROM AN OUTPUT DATABASE The resulting output is Node sets ALL NODES The following statements display the node sets and the element sets in the PART 1 1 part instance print Node sets odb rootAssembly instances PART 1 1 nodeSets keys print Element sets odb rootAssembly instances PART 1 1 elementSets keys The resulting output is Node sets ALLN BOT CENTER N1 N19 N481 N499 PUNCH TOP Element sets CENT ETOP FOAM PMASS UPPER The following statement assigns a variable topNodeSet to the TOP node set in the PART 1 1 part instance topNodeSet odb rootAssembly instances PART 1 1 nodeSets TOP The type of the object to which topNodeSet refers is OdbSet After you create a variable that refers to a region you can use the variable to refer to a subset of field output data as described in Using regions to read a subset of field output data Section 9 5 7 Materials Materials are stored in the materials repository under the
187. ended for relatively frequent output requests for small portions of the model and can be displayed in the form of X Y data plots in the Visualization module of Abaqus CAE Individual variables such as a particular stress component can be requested Depending on the type of output expected a HistoryRegion object can be defined for one of the following e anode e an integration point e aregion e the whole model The output from all history requests that relate to a particular point or region is then collected in one HistoryRegion object Figure 10 4 shows the history output data object model within an output database 10 10 Container IH Singular object COMPILING AND LINKING YOUR C SOURCE CODE parts sections materials Model Data L steps frames ale fieldOutputs historyRegions L fieldValues Results Data Figure 10 3 The field output data object model Container J Singular object L steps parts sections materials Model Data frames qs fieldOutputs historyRegions historyOutputs Se data Results Data Figure 10 4 The history output data 10 6 Compiling and linking your C source code Sample postprocessing programs to perform commonly exercised tasks are presented in separate sections in this chapter These and other C postprocessing programs must be compiled and linked using the make parameter when running the Abaqus execution procedure see Making u
188. ent strainFieldValues frame fieldOutputs LE values Asa result Abaqus does not need to reconstruct the sequence of FieldValue objects each time the script accesses a strain component Similarly if you expect to retrieve more than one frame from an output database you should create a temporary variable that holds the entire frame repository You can then provide the logic to retrieve the desired frames from the repository and avoid recreating the repository each time For example executing the following statements could be very slow for i in range len odb steps name frames 1 9 43 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE frame i odb steps name frames i Creating a temporary variable to hold the frame repository provides the same functionality and speeds up the process frameRepository odb steps name frames for i in range len frameRepository 1 frame i frameRepository i Such a potential loss of performance will not be a problem when accessing a load case frame Accessing a load case frame does not result in the creation of a frame repository and thus does not suffer from a corresponding loss of performance 9 10 Example scripts that access data from an output database The following examples illustrate how you use the output database commands to access data from an output database e Finding the maximum value of von Mises stress Section 9 10 1 e Creating an out
189. entLabels elem lt lt endl for int ip 0 ip lt numIP ip cout lt lt Int Point lt lt integrationPoints ipPosition lt lt endl cout lt lt S for int comp 0 comp lt numComp comp cout lt lt lt lt data dataPosition lt lt cout lt lt endl For more information see FieldBulkData object Section 60 5 of the Abaqus Scripting Reference Manual The bulkDataBlocks method is an alternative to the values method of a FieldOutput object described in Reading field output data Section 10 10 6 The values method of a FieldOutput object returns a reference to a sequence of FieldValue objects that contain data Each FieldValue object in the sequence provides data for a unique location in the model Performance can be increased with the bulk data interface because the field data stored in a bulk data block are made available in a single array of floating point numbers If you access the same data in nonbulk form you must loop over a sequence of Field Value objects and then access the data for each location separately Traversing an array can prove to be significantly faster than traversing a sequence of objects and extracting data stored within the objects As a result accessing the data in an output database using the bulk data interface can be significantly faster than the nonbulk form If you do not need to access large amounts of data you may get better performance with the non
190. entation of an output database and to view the structure of the model data in the object model For example the following shows the output from prettyPrint applied to the output database created by the Abaqus CAE cantilever beam tutorial from odbAccess import from textRepr import odb openOdb Deform odb prettyPrint odb 2 analysisTitle Cantilever beam tutorial closed False description DDB object diagnosticData analysisErrors OdbSequenceAnalysisError object analysisWarnings OdbSequenceAnalysisWarning object jobStatus JOB STATUS COMPLETED SUCCESSFULLY jobTime OdbJobTime object numberOfAnalysisErrors 0 numberOfAnalysisWarnings 0 numberOfSteps 1 numericalProblemSummary OdbNumericalProblemSummary object steps OdbSequenceDiagnosticStep object isReadOnly False jobData analysisCode ABAQUS STANDARD creationTime date time year machineName modificationTime date time year name Deform odb precision SINGLE PRECISION productAddOns tuple object version Abaqus Standard release name Deform odb parts BEAM Part object path C Deform odb rootAssembly connectorOrientations ConnectorOrientationArray object datumCsyses Repository object elementSet Repository object elementSets Repository object elements OdbMeshElementArray object instan
191. ep getFrame loadCase loadCase fieldOutputs S sFields append stressField getScalarField componentLabel S11 compute stress range maxStress maxLoc maxEnvelope sFields minStress minLoc minEnvelope sFields stressRange maxStress minStress save to same step newFrame step Frame incrementNumber 0 frameValue 0 0 description Stress Range newFrame FieldOutput field stressRange name S11 Range odb save odb close Transformation of field results This example illustrates how field results can be transformed to a different coordinate system The example computes deviation of the nodal displacements with respect to a perfectly cylindrical displacement cylinder bore distortion The example does the following Creates a cylindrical coordinate system Transforms the results to the new coordinate system Computes the average radial displacement Computes the distortion as the difference between radial displacement and the average radial displacement Saves the distortion field to the output database for viewing Use the following commands to retrieve the example script and an input file to create a sample output database 9 63 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE abaqus fetch job transformExa abaqus fetch job esf4sxdg from odbAccess import Retrieve request from user odbName raw_input Enter odb name stepName raw_input Enter step name frameNo i
192. ep objects etc Figure 6 4 shows the basic structure of the objects under the Model object For more information see The Model object model Section 6 1 3 Odb Odb objects are saved in an output database and contain both model and results data as shown in Figure 6 5 Most of the commands in the Abaqus Scripting Interface begin with either the Session the Mdb or the Odb object For example session viewports Viewport 1 bringToFront mdb models wheel rootAssembly regenerate stress odb steps Step 1 frames 3 fieldOutputs S 6 1 2 Using tab completion to explore the object model You can use tab completion from the command line interface to speed up your typing and to explore the object model For example you can type mdb models Model 1 parts in the command 5 THE Abaqus OBJECT MODEL session odbs defaultOdbDisplay displayGroups colors Container I Singular object Oo viewports defaultViewportAnnotationOptions sketcherOptions probeOptions probeReport selectedProbeValues paths xyDataObjects xyPlots xyReportOptions queues Figure 6 2 The Session object model THE Abaqus OBJECT MODEL session L viewports Lua Conair odbDisplay I Singular object Figure 6 3 The Viewport object model models an adaptivemeshControls amplitudes boundaryConditions constraints fieldOutputRegests historyOutputRegests interac
193. erence Manual The RootAssembly object The root assembly is created when you create the output database You access the RootAssembly object using the same syntax as that used for reading from an output database odb Assembly amp rootAssy odb rootAssembly You can create both instances and regions on the RootAssembly object Part instances You use the Instance constructor to create part instances of the parts you have already defined using the Part constructor For example odb Instance amp instanceA odb rootAssembly Instance part 1 1 part1 10 42 WRITING TO AN OUTPUT DATABASE You can also supply an optional local coordinate system that specifies the rotation and translation of the part instance You can add nodes and elements only to a part you cannot add elements and nodes to a part instance As a result you should create the nodes and elements that define the geometry of a part before you instance the part For a full description of the Instance command see OdbInstance object Section 60 17 of the Abaqus Scripting Reference Manual Regions Region commands are used to create sets from element labels node labels and element faces You can create a set on a part part instance or the root assembly Node and element labels are unique within an instance but not within the assembly As a result a set on the root assembly requires the names of the part instances associated with the nodes and elements You can
194. ession defaultGraphicsOptions setValues displayLists OFF dragMode AS IS def onCaeStartup Print preferences session printOptions setValues vpDecorations OFF vpBackground OFF rendition COLOR printCommand lpr session psOptions setValues date OFF Job preferences def setJobPreferences module userData import job 6 32 USING Abaqus SCRIPTING INTERFACE COMMANDS IN YOUR ENVIRONMENT FILE session Queue name long hostName server queueName large directory tmp addImportCallback job setJobPreferences Visualization preferences def setVisPreferences module userData import visualization session defaultOdbDisplay contourOptions setValues renderStyle SHADED visibleEdges EXTERIOR contourStyle CONTINUOUS addImportCallback visualization setVisPreferences The addImportCallback statement instructs Abaqus to call a function when the user first imports a module In this example Abaqus calls the setJUobPreferences function when the user first enters the Job module and Abaqus calls the setVisPreferences function when the user first enters the Visualization module The setJobPreferences function creates a queue on a remote host The setVisPreferences function sets default options for contour plots The example environment file uses the onCaeStartup function to control a set of Python statements that are executed when Abaqus CAE first starts The environment file can also contain the
195. esults Data Figure 9 5 The history data object model sequence is a tuple of frequency value In a modal domain analysis domain MODAL the sequence is a tuple of mode value In the analysis that generated the Abaqus CAE Visualization module tutorial output database the user asked for the following history output At the rigid body reference point Node 1000 e U e V e A At the corner element e MISES e LE22 e S22 The history output data can be retrieved from the HistoryRegion objects in the output database The tutorial output database contains HistoryRegion objects that relate to the rigid body reference point and the integration points of the corner element as follows e Node PART 1 1 1000 e Element PART 1 1 1 Int Point 1 e Element PART 1 1 1 Int Point 2 9 21 READING FROM AN OUTPUT DATABASE e Element PART 1 1 1 Int Point 3 e Element PART 1 1 1 Int Point 4 The following statements read the tutorial output database and write the U2 history data from the second step to an ASCII file that can be plotted by Abaqus CAE from odbAccess import odb openOdb path viewer tutorial odb step2 odb steps Step 2 region step2 historyRegions Node PART 1 1 1000 u2Data region historyOutputs U2 data dispFile open disp dat w for time u2Disp in u2Data dispFile write 10 4E 10 4E n time u2Disp dispFile close The output in this example is a sequence of tup
196. exception handling you can catch the error display a helpful message and take the appropriate action For example a revised version of the code attempts to open the same file within a try statement Ifan IOError error is encountered the except statement catches the L OError exception and assigns the exception s value to the variable error gt gt gt try wsi outputFile open foam txt except IOError error meee print Exception trapped error Exception trapped 2 No such file or directory You can raise your own exceptions by providing the error type and the error message to the raise statement The following example script raises an exception and displays a message if the function myFunction encounters a problem def myFunction x y if y 0 raise ValueError y argument cannot be zero else 4 25 PROGRAMMING TECHNIQUES return x y try print myFunction temperature velocity except ValueError error print error Exception handling is discussed in more detail in Error handling in the Abaqus Scripting Interface Section 5 5 4 6 5 Functions and modules When you start Python from a local window or from Abaqus CAE the Python interpreter is aware of a limited set of built in functions For example try entering the following at the Python prompt gt gt gt myName Einstein gt gt gt len myName Python returns the number 8 indicating the length of the string myName The
197. f the instance For more information see RepositorySupport Section 5 6 6 The arguments to the Repository method are the name of the repository and a constructor or a sequence of constructors Those constructors must have name as their first argument and the infrastructure will automatically assign that value to a member called name Instances of these constructors will be stored in the repository For more information see Repository object Section 52 3 of the Abaqus Scripting Reference Manual Since repositories are designed to notify the GUI when their contents change the objects placed inside them should be derived from either CommandRegister or RepositorySupport to extend this capability to its fullest The Abaqus Scripting Interface uses the following conventions e The name of a repository is a plural noun with all lowercase letters e A constructor is a capitalized noun or a combination of capitalized nouns and adjectives e The first argument to the constructor must be name For example the Part constructor creates a part object and stores it in the parts repository You can access the part object from the repository using the same name argument that you passed in with the Part constructor In some cases more than one constructor can create instances that are stored in the same repository For example the HomogeneousSolidSection and the 5 18 EXTENDING THE Abaqus SCRIPTING INTERFACE HomogeneousShellSection constru
198. field name CStr lt lt lt lt field description CStr lt lt endl cout lt lt Type lt lt field type lt lt endl int numLoc seqboc size for int loc 0 loc lt numLoc loc cout lt lt Position lt lt seqhoc constGet loc position cout lt lt endl The resulting print output lists all the field output variables in a particular frame along with their type and position S Stress components Type 7 Number of fieldValues 135 Number of locations 1 U Spatial displacement Type 3 Number of fieldValues 161 Number of locations 1 In turn a FieldOutput object has a method values that returns a reference to a sequence of FieldValue objects that contain data Each FieldValue object in the sequence corresponds to a particular location in the model You can obtain the data corresponding to each FieldValue object using the data method which returns a pointer to an array that contains the results at the current location For example const odb SequenceFieldValue amp displacements lastFrame fieldoOutputs U values int numValues displacements size 10 30 READING FROM AN OUTPUT DATABASE int numComp 0 for int i 0 i lt numValues i const odb FieldValue val displacements i cout lt lt Node lt lt val nodeLabel const float const U val data numComp cout lt lt U for int comp 0 comp lt numComp comp cout lt lt
199. following Displacement versus skew angle Maximum bending moment versus skew angle Minimum bending moment versus skew angle The theoretical results are also plotted skewExample py This script performs a parameter study of element type versus skew angle For more details see Problem 2 3 4 in the Abaqus Benchmarks manual Before executing this script you must fetch the appropriate files abaqus fetch job skewExample abaqus fetch job skewExampleUtils py 8 16 INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS import part import mesh from mesh import S4 S8R STANDARD STRUCTURED import job from skewExampleUtils import getResults createXYPlot Create a list of angle parameters and a list of element type parameters angles 90 80 60 40 30 elemTypeCodes S4 S8R Open the model database openMdb skew cae model mdb models Model 1 part model parts Plate feature part features Shell planar 1 assembly model rootAssembly instance assembly instances Plate 1 job mdb jobs skew allFaces instance faces regions allFaces 0 allFaces 1 allFaces 2 allFaces 3 assembly setMeshControls regions regions technique STRUCTURED facel allFaces findAt 0 0 0 face2 allFaces findAt 0 1 0 face3 allFaces findAt 1 1 0 face4 allFaces findAt 1 0 0 allVertices instance vertices v1 allVertices findAt 0 0 0 v2 al
200. following e The onJobStartup function controls a set of statements that execute when an analysis job starts For example def onJobStartup import os shutil restartDir savedir id restart if os path exists restartDir shutil rmtree restartDir e The onJobCompletion function controls a set of statements that execute when an analysis job completes For example def onJobCompletion import os extensions res stt mdl prt abq pac restartDir savedir os sep id restart if not os path exists restartDir os mkdir restartDir for extension in extensions fileName id extension if os path exists savedir os sep fileName 6 33 5 USING Abaqus SCRIPTING INTERFACE COMMANDS IN YOUR ENVIRONMENT FILE os rename savedir os sep fileName restartDir os sep fileName The following variables are available to the onJobStartup and onJobCompletion functions id The job identifier that was specified as the value of the job option from the command line savedir The path to the directory from which the job was submitted scrdir The path to the scratch directory analysisType The type of analysis to be executed Possible values are STANDARD and EXPLICIT For a list of the variables that are available outside of the onJobStartup and onJobCompletion functions see Job variables Section 4 1 9 of the Abaqus Installation and Licensing Guide For more inform
201. frastructure can notify the GUI when the contents of the list change The values in the list must all be of the same type all integers or all strings for example to prevent errors when accessing them from the GUI The values must all be of the same type for example all integers or all strings The RegisteredList has the same methods as a Python list For example appending Item 1 to the list in the following statements causes the infrastructure to notify the GUI that the contents of the list have changed from customKernel import RegisteredList mdb customData myList RegisteredList mdb customData myList append Item 1 5 6 9 Registered tuples You use the RegisteredTupl e class to create a tuple that can be queried from the GUI In addition the infrastructure can notify the GUI when the contents of any of the members of the tuple change The members in the tuple must derive from the CommandRegister class and the values in the tuple must all be of the same type for example all integers or all strings For example from abaqus import from customKernel import CommandRegister RegisteredTuple class Block CommandRegister 5 21 a EXTENDING THE Abaqus SCRIPTING INTERFACE def init self name CommandRegister init self mdb customData Repository blocks Block block1 mdb customData Block name Block 1 block2 mdb customData Block name Block 2 tuple blockl block2 mdb customData myTuple RegisteredTuple
202. g the Python interpreter For example gt gt gt def calculateCylinderVolume radius 0 5 height 1 0 artis Calculates the volume of a cylinder spt Takes two optional arguments radius default 0 5 Dia and height default 1 0 Jen nnn a from math import ensue volume pi radius 2 height erat return volume gt gt gt print calculateCylinderVolume doc Calculates the volume of a cylinder Takes two optional arguments radius default 0 5 and height default 1 0 You can retrieve the documentation string for the methods in the Abaqus Scripting Interface For example gt gt gt mdb Model doc _ Mdb Model name lt description stefanBoltzmann absoluteZero gt gt This method creates a Model object gt gt gt session Viewport doc _ Session Viewport name lt origin width height border titleBar titleStyle customTitleString gt gt This method creates a Viewport object with the specified origin and dimensions 4 20 PROGRAMMING TECHNIQUES The documentation string shows the name of each argument name and whether the argument is required or optional The string also shows a brief description of the method You can use the sys module to retrieve command line arguments and pass them to a function For example the following script takes two arguments the X and Y coordinates of a point and calculates the distance from the point to the origin The script uses the following modules
203. ger dialog box To make use of these features you must derive your custom kernel objects from the classes listed in the following sections For more details on GUI customization see the Abaqus GUI Toolkit Reference Manual 5 17 a EXTENDING THE Abaqus SCRIPTING INTERFACE 5 6 3 CommandRegister class You can use the CommandRegister class to derive a general class that can be queried from the GUI In addition the class can notify the GUI when its contents change For example class Block CommandRegister def init self name CommandRegister init self If a query is registered by the GUI on an instance of this class the GUI will be notified when a member of this instance is changed added or deleted For more details on registering queries see the Abaqus GUI Toolkit Reference Manual If your object is to be stored in a repository see below the first argument to the constructor must be a string representing the name of the object That string will automatically be assigned by the infrastructure to a member called name 5 6 4 Repositories Repositories are containers that hold objects that are keyed by strings It may be convenient to store your custom kernel objects in repositories in the same way that Abaqus CAE part objects are stored in the Parts repository The customData object is an instance of a RepositorySupport class which provides a Repository method that allows you to create a repository as an attribute o
204. he stress is greater than a certain maximum value the script prints the strain components for the element stressField frame fieldOutputs MISES strainField frame fieldOutputs LE 9 42 IMPROVING THE EFFICIENCY OF YOUR SCRIPTS count 0 for v in stressField values if v mises gt stressCap if v integrationPoint print Element label v elementLabel Integration Point v integrationPoint else print Element label v elementLabel for component in strainField values count data print 10 5f component print count count 1 In this example every time the script accesses a strain component from strainField value Abaqus must reconstruct the sequence of FieldValue objects This reconstruction could result in a significant performance degradation particularly for a large model A slight change in the script greatly improves its performance as shown in the following example stressField frame fieldOutputs MISES strainFieldValues frame fieldOutputs LE values count 0 for v in stressField values if v mises gt stressCap if v integrationPoint print Element label v elementLabel Integration Point v integrationPoint else print Element label v elementLabel for component in strainFieldValues count data print 10 5f component print count count 1 The second script replaces the statement strainField frame fieldOutputs LE with the statem
205. hematical operations Section 9 8 1 e Valid mathematical operations Section 9 8 2 e Envelope calculations Section 9 8 3 9 8 1 Rules for the mathematical operations Mathematical operations are supported for FieldOutput FieldValue and HistoryOutput objects These operators allow you to perform linear superposition of Abaqus results or to create more complex derived results from Abaqus results The following rules apply e The operations are performed on the components of a tensor or vector e The invariants are computed from the component values For example taking the absolute value of a tensor can result in negative values of the pressure invariant e Operations between FieldOutput FieldValue and HistoryOutput objects are not supported e Multiplication and division are not supported between two vector objects nor between two tensor objects 9 37 5 COMPUTATIONS WITH Abaqus RESULTS e The types in an expression must be compatible For example A vector cannot be added to a tensor A three dimensional surface tensor cannot be added to a three dimensional planar tensor INTEGRATION POINT data cannot be added to ELEMENT NODAL data e Ifthe fields in the expression were obtained using the getSubset method the same getSubset operations must have been applied in the same order to obtain each field e Arguments to the trigonometric functions must be in radians e Operations on tensors are performed in the
206. his documentation may be reproduced or distributed in any form without prior written permission of Dassault Syst mes or its subsidiary The Abaqus Software is a product of Dassault Syst mes Simulia Corp Providence RI USA Dassault Syst mes 2011 Abaqus the 3DS logo SIMULIA CATIA and Unified FEA are trademarks or registered trademarks of Dassault Systemes or its subsidiaries in the United States and or other countries Other company product and service names may be trademarks or service marks of their respective owners For additional information concerning trademarks copyrights and licenses see the Legal Notices in the Abaqus 6 11 Release Notes SIMULIA Worldwide Headquarters SIMULIA European Headquarters United States Australia Austria Benelux Canada China Finland France Germany India Italy Japan Korea Latin America Scandinavia United Kingdom Czech amp Slovak Republics Greece Israel Malaysia New Zealand Poland Russia Belarus amp Ukraine Singapore South Africa Spain amp Portugal Taiwan Thailand Turkey Locations Rising Sun Mills 166 Valley Street Providence RI 02909 2499 Tel 1 401 276 4400 Fax 1 401 276 4408 simulia support 3ds com http www simulia com Stationsplein 8 K 6221 BT Maastricht The Netherlands Tel 31 43 7999 084 Fax 31 43 7999 306 simulia europe info 3ds com Dassault Systemes Centers of Simulation Excellence Fremont CA Tel 1 510
207. how you can use this program in conjunction with the output database generated by the problem described in Free ring under initial velocity comparison of rate independent and rate dependent plasticity Section 1 3 4 of the Abaqus Benchmarks Manual Use the following commands to retrieve the example program and the benchmark input file abaqus fetch job odbFilter c abaqus fetch job ringshell inp 1 Run an analysis using the benchmark input file abaqus job ringshell This creates an output database called ringshel1 odb that contains 100 frames of data 2 Runa datacheck analysis to obtain a new output database called ringshell datacheck odb that contains the same model data as ringshe11 odb abaqus job ringshell datacheck input ringshell datacheck 3 Create the executable program abaqus make job odbFilter c The program displays the number of frames available in each step For each step you must specify the number of increments between frames which is the frequency at which the data will be copied to the new output database Data for the first and last increment in each step are always copied For example if a step has 100 frames and you enter a frame interval of 37 the program will copy data for frames 0 37 74 and 100 The following statement will run the executable program and read data from the small output database containing only model data and the large output database created by the benchmark example abaqus odbFilter
208. hows an example script being run from the command line interface bl gt gt gt execfile modelAEzample py The model Model A has been created gt gt gt Click L in the lower left corner of the main window to switch from the message area to the command line interface CREATING A PART Simple examples 3 1 Programming with the Abaqus Scripting Interface is straightforward and logical To illustrate how easy it is to write your own programs the following sections describe two simple Abaqus Scripting Interface scripts e Creating a part Section 3 1 e Reading from an output database Section 3 2 You are not expected to understand every line of the examples the terminology and the syntax will become clearer as you read the detailed explanations in the following chapters Summary Section 3 3 describes some of the principles behind programming with Python and the Abaqus Scripting Interface Creating a part The first example shows how you can use an Abaqus CAE script to replicate the functionality of Abaqus CAE The script does the following e Creates a new model in the model database e Creates a two dimensional sketch e Creates a three dimensional deformable part e Extrudes the two dimensional sketch to create the first geometric feature of the part e Creates a new viewport e Displays a shaded image of the new part in the new viewport The new viewport and the shaded part are
209. ickle module see the official Python web site www python org If your code creates a custom class and stores an instance of the class in the model database the custom module that defined that custom class must be available for Python to unpickle the data when the database is subsequently opened Consequently if a user saves custom data to a model database and then passes that model database to another user the other user must also have access to the custom modules that produced the custom data Otherwise they will not be able to load the custom data into their Abaqus CAE session Abaqus CAE does not keep track of changes made to the customData object As a result when the user quits a session Abaqus CAE will not prompt them to save their changes if they changed only objects under customData 5 6 2 Interaction with the GUI In addition to providing a persistence mechanism the customKernel module contains classes that provide the following capabilities e Querying custom kernel data values from the GUI From a GUI script you can access some attribute of your custom kernel object just as you would from the kernel For example print mdb customData myObject name e Notification to the GUI when custom kernel data change For example you can have a manager dialog box that lists the objects in a repository When the contents of the repository change you can be notified and take the appropriate action to update the list of objects in the mana
210. ieve objects from repositories Iterators are provided to navigate the repositories The following Abaqus repositories are provided e odb_ PartRepository e odb_FieldOutputRepository e odb_ SectionCategoryRepository e odb_HistoryRegionRepository e odb_SetRepository e odb_HistoryOutputRepository e odb_StepRepository e odb_InstanceRepository More detail on these interface utility objects can be found in Chapter 60 Odb commands of the Abaqus Scripting Reference Manual 10 9 2 Utility interface examples The following examples demonstrate the utility interface for each of the utility interface classes discussed 10 17 UTILITY INTERFACE Strings odb String type stressField baseElementTypes 0 odb String elementType odb String Element type is type cout lt lt elementType CStr lt lt endl Sequences odb Set amp mySurface rootAssy surfaces TARGET const odb String instanceName PART 1 1 const odb SequenceElementFace allFaces mySurface faces instanceName odb SequenceSequenceElementFace newFaces int allFaces size allFaces size for int i 0 i lt allFaces size i const odb SequenceElementFace fList allFaces i odb SequenceElementFace newList int fList size fList size for int j 0 j lt fList size j const odb Enum odb ElementFaceEnum face fList j newList append face newFaces append newList Repositories odb StepRepository stepCon od
211. ing an output database you first create an Odb object You then use the Part constructor to create a part After creating the part you use the addNodes and addElements methods of the Part object to add nodes and elements respectively Similarly you use 10 39 WRITING TO AN OUTPUT DATABASE the addData method of the FieldOutput object to add field output data to the output database After creating an output database you should use the save method on the Odb object to save the output database The example program in Creating an output database Section 10 15 2 also illustrates how you can write to an output database The following topics are covered e Creating a new output database Section 10 11 1 e Writing model data Section 10 11 2 e Writing results data Section 10 11 3 e Writing field output data Section 10 11 4 e Default display properties Section 10 11 5 e Writing history output data Section 10 11 6 10 11 1 Creating a new output database You use the Odb constructor to create a new empty Odb object odb Odb amp odb Odb myData derived data test problem testWrite odb For a full description of the Odb command see Odb object Section 60 1 of the Abaqus Scripting Reference Manual Abaqus creates the RootAssembly object when you create or open an output database You use the save method to save the output database odb save For a full description of the s
212. ing sections describe how you use Abaqus Scripting Interface commands to read data from an output database The following topics are covered e The Abaqus CAE Visualization module tutorial output database Section 9 5 1 e Making the Odb commands available Section 9 5 2 e Opening an output database Section 9 5 3 e Reading model data Section 9 5 4 e Reading results data Section 9 5 5 e Reading field output data Section 9 5 6 e Using regions to read a subset of field output data Section 9 5 7 e Reading history output data Section 9 5 8 e An example of reading node and element information from an output database Section 9 5 9 e An example of reading field data from an output database Section 9 5 10 READING FROM AN OUTPUT DATABASE 9 5 1 The Abaqus CAE Visualization module tutorial output database The following sections describe how you can access the data in an output database Examples are included that refer to the Abaqus CAE Visualization module tutorial output database viewer tutorial odb This database is generated by the input file from Case 2 of the example problem Indentation of an elastomeric foam specimen with a hemispherical punch Section 1 1 4 of the Abaqus Example Problems Manual The problem studies the behavior of a soft elastomeric foam block indented by a heavy metal punch The tutorial shows how you can use the Visualization module to view the data
213. ing the Select Main File or Recent Main Files items in the File menu You can also create a new main file or select an open file to be the main file Note When the Set Last Main File on Startup setting is toggled on the Abaqus PDE automatically reopens the main file that was open when you closed your last session The default file extensions for use with the Abaqus PDE are py and guiLog A py file typically designates a standard Python or Abaqus Scripting Interface script and a guiLog file is a specialized Python script that records actions in the Abaqus CAE GUI As you play a main file script the Abaqus PDE automatically opens any files that contain functions called by the script if the files are available in the current path sys path These files are added to the recently used files list in the File menu The Abaqus PDE also saves a list of recently used files and other files dependent files called when you run a main file This list is saved in the current directory as abaqus pde deps Figure 7 2 shows the items in the Abaqus PDE File menu New Open Ctrl O Select Main File Make Gurrent Main Save Ctrl S Save As Reload Modules Close File triad_plugin py Recent Main Files Recent Traced Files Recent Files YY Y Exit Abaqus PDE Alt F4 Ctrl Q Figure 7 2 The File menu The following options are available from the File menu 7 4 Abaqus PDE BASICS New Create a new file The Abaqus PD
214. invariants for Abaqus data types Data type Components Invariants SCALAR VECTOR 1 2 3 MAGNITUDE TENSOR 3D FULL 11 22 33 12 13 23 MISES TRESCA PRESS INV3 MAX PRINCIPAL MID_PRINCIPAL MIN_ PRINCIPAL TENSOR 3D SURFACE 11 22 12 MAX PRINCIPAL MIN_PRINCIPAL MAX INPLANE PRINCIPAL MIN _INPLANE PRINCIPAL TENSOR 3D PLANAR 11 22 33 12 MISES TRESCA PRESS INV3 MAX PRINCIPAL MID_ PRINCIPAL MIN PRINCIPAL MAX INPLANE PRINCIPAL MIN_INPLANE PRINCIPAL OUTOFPLANE PRINCIPAL TENSOR 2D SURFACE 11 22 12 MAX PRINCIPAL MIN_PRINCIPAL MAX INPLANE PRINCIPAL MIN _INPLANE PRINCIPAL TENSOR 2D PLANAR 11 22 33 12 MISES TRESCA PRESS INV3 MAX PRINCIPAL MID PRINCIPAL MIN PRINCIPAL MAX INPLANE PRINCIPAL MIN_INPLANE PRINCIPAL OUTOFPLANE PRINCIPAL For example the following statements add element data to the FieldOutput object Write stress tensors output only available at top bottom section points The element defined above S4 has 4 integration points Hence there are 4 stress tensors per element Abaqus creates one layer of section points each time the script calls the addData method elementLabelData 1 2 9 33 Oo WRITING TO AN OUTPUT DATABASE topData 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 bottomData 1 2 3 4 1 2 3 4 1
215. ion Viewport name Top view gt gt gt session Viewport name Front view gt gt gt for key in session viewports keys print key Front view Top view Side view You can use the keys 7 method to access an individual key however most repositories are not ordered and this is not recommended You can use the changeKey method to change the name of a key in a repository For example myPart mdb models Model 1 Part name housing dimensionality THREE D type DEFORMABLE BODY mdb models Model 1 parts changeKey fromName housing toName form 5 4 Object oriented programming and the Abaqus Scripting Interface You should now be familiar with some of the concepts behind object oriented programming such as objects constructors methods and members This section describes how object oriented programming 5 OBJECT ORIENTED PROGRAMMING AND THE Abaqus SCRIPTING INTERFACE relates to the Abaqus Scripting Interface and summarizes some of the terminology The following topics are covered e The Abaqus Scripting Interface and methods Section 5 4 1 e The Abaqus Scripting Interface and members Section 5 4 2 e Object oriented programming and the Abaqus Scripting Interface a summary Section 5 4 3 5 4 1 The Abaqus Scripting Interface and methods Most Abaqus Scripting Interface commands are methods For example session viewports Viewport 1 setValues width 50 In this example set
216. ions odb SectionApi sectionApi odb extendApi odb Enum odb SECTION sectionApi odb String sectionName Homogeneous Shell Section double thickness 2 0 odb HomogeneousShellSection amp section 1 sectionApi HomogeneousShellSection sectionName thickness materialName Create a 2 element shell model 4 integration points 5 section points odb Part amp partl odb Part part 1 odb Enum THREE D odb Enum DEFORMABLE BODY odb SequenceInt nodeLabels for n 1 n lt 7 n nodeLabels append n double c 6 3 1 0 0 0 2 0 0 0 2 1 0 1 1 1 0 1 2 1 0 1 1 1 0 1 odb SequenceSequenceFloat nodeCoor for n 0 n lt nodeLabels size n odb SequenceFloat loc for int i 0 i lt 3 i loc append c n i nodeCoor append loc odb String nodeSetName nset 1 partl1 addNodes nodeLabels nodeCoor nodeSetName odb SequenceInt elLabels elLabels append 1 elLabels append 2 odb SequenceSequenceInt connect const int numNodePerEl 4 int conn 2 numNodePerE1 1 2 3 4 10 70 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE 6 5 2 1 for int e 0 e lt elLabels size e odb SequencelInt 1 for int i 0 i lt numNodePerE1l i 1 append conn e i connect append 1 odb String elType S4 odb String elsetName eset 1 partl addElements elLabels connect elType elsetName sCat
217. ipt submits myJob1 and waits for it to complete before submitting myJob2 myJob1 mdb Job name Job 1 myJob2 mdb Job name Job 2 myJob1 submit myJob1 waitForCompletion myJob2 submit myJob2 waitForCompletion If you submit more than one job and then issue awaitForCompletion statement Abaqus waits until the job associated with the wait ForCompletion statement is complete before checking the status of the second job If the second job has already completed the waitForCompletion method returns immediately In the following example the script will not check the status ofmyJob2 until myJob1 has completed myJob1 mdb Job name Job 1 myJob2 mdb Job name Job 2 myJob1 submit myJob2 submit myJob1 waitForCompletion myJob2 waitForCompletion If the job submission is delayed using either the at or wait arguments the interval specified by the timeOut argument includes both the time required to wait and the time required to execute It is possible for the wait ForCompletion method to time out before the job is submitted If this occurs the script continues and the waitForCompletion method throws an exception to indicate that the job did not run to completion because of a time out however the computer system will still submit the job As a result if you use the at argument you should add statements that check the status of the job and proceed accordingly 6 30 INTERACTING WITH Abaqus Standard Abaqus Ex
218. ired by those classes or functions in the Abaqus CAE model database so the data are available the next time you open the database To store custom kernel data in the Abaqus CAE model database you must make use of the customKernel module The customKernel module augments the mdb object with a member called customData When you save a model database Abaqus CAE also saves any data created below the customData object For example import customKernel mdb Mdb mdb customData myString The width is mdb customData myNumber 58 EXTENDING THE Abaqus SCRIPTING INTERFACE mdb saveAs custom test cae mdb close If you start a new session and open the model database custom test cae you can refer to the variables that you saved For example gt gt gt import customKernel mdb openMdb custom test cae gt gt gt print mdb customData myString mdb customData myNumber The width is 58 You can store almost any type of Python object under mdb customData for example strings numbers and Python classes However there are some restrictions for example you cannot store file objects These restrictions are due to the fact that the Abaqus CAE infrastructure uses Python s pickle module to store the customData object in the model database The pickle module allows the Python programmer to write a data structure to a file and then recreate that data structure when reading from the file For details on the restrictions imposed by the p
219. irst create the parts that are used by the model and then you add nodes and elements to the parts You then define the assembly by creating instances of the parts If the output database already contains results data you should not change the geometry of the model This is to ensure that the results remain synchronized with the model Part If the part was created by Abaqus CAE the description of the native Abaqus CAE geometry is stored in the model database but it is not stored in the output database A part is stored in an output database as a collection of nodes elements surfaces and sets You use the Part constructor to add a part to the Odb object You can specify the type of the part however only DEFORMABLE BODY is currently supported For example partl odb Part name part 1 embeddedSpace THREE D type DEFORMABLE BODY For a full description of the Part constructor see OdbPart object Section 33 20 of the Abaqus Scripting Reference Manual The new Part object is empty and does not contain geometry After you create the Part object you add nodes and elements You use the addNodes method to add nodes by defining node labels and coordinates You can also define an optional node set For example nodeData 1 1 0 0 2 2 0 0 3 2 1 0 1 4 1 1 0 1 5 2 1 0 1 6 1 1 0 1 9 27 WRITING TO AN OUTPUT DATABASE part1 addNodes nodeData nodeData nodeSetName nset 1 For a full description of th
220. isight jp info 3ds com Mapo Gu Seoul Tel 82 2 785 6707 8 simulia kr info 3ds com Puerto Madero Buenos Aires Tel 54 11 4312 8700 Horacio Burbridge 3ds com V ster s Sweden Tel 46 21 150870 simulia nordic info 3ds com Warrington Tel 44 1925 830900 simulia uk info 3ds com Authorized Support Centers Synerma s r 0 Ps ry Prague West Tel 420 603 145 769 abaqus synerma cz 3 Dimensional Data Systems Crete Tel 30 2821040012 support 3dds gr ADCOM Givataim Tel 972 3 7325311 shmulik keidar adcomsim co il WorleyParsons Advanced Analysis Kuala Lumpur Tel 603 2039 9000 abaqus my worleyparsons com Matrix Applied Computing Ltd Auckland Tel 64 9 623 1223 abaqus tech matrix co nz BudSoft Sp z 0 0 Poznan Tel 48 61 8508 466 info budsoft com pl TESIS Ltd Moscow Tel 7 495 612 44 22 info tesis com ru WorleyParsons Advanced Analysis Singapore Tel 65 6735 8444 abaqus sg worleyparsons com Finite Element Analysis Services Pty Ltd Parklands Tel 27 21 556 6462 feas feas co za Principia Ingenieros Consultores S A Madrid Tel 34 91 209 1482 simulia principia es Simutech Solution Corporation Taipei R O C Tel 886 2 2507 9550 lucille simutech com tw WorleyParsons Advanced Analysis Singapore Tel 65 6735 8444 abaqus sg worleyparsons com A Ztech Ltd Istanbul Tel 90 216 361 8850 info a ztech com tr Complete contact information is available at http www simulia com locations loca
221. ission by typing abaqus cae 2 From the startup screen select Run Script 3 From the Run Script dialog box that appears enter the path given above and select the file containing the script 4 Click OK to run the script Note If Abaqus CAE is already running you can run the script by selecting File Run Script from the main menu bar REPRODUCING THE CANTILEVER BEAM TUTORIAL 8 1 2 The cantilever beam example script The first line of the script from abaqus import imports the Mdb and Session objects The current viewport is session viewports Viewport 1 and the current model is mdb models Model 1 Both of these objects are available to the script after you import the abaqus module The second line of the script from abaqusConstants import imports the Symbolic Constants defined in the Abaqus Scripting Interface The script then creates a new model that will contain the cantilever beam example and creates a new viewport in which to display the model and the results of the analysis For a description of the commands used in this section see the appropriate sections in the Abaqus Scripting Reference Manual The script then imports the Part module Most of the sections in this example begin with importing the appropriate module which illustrates how a script can import a module at any time to extend or augment the object model However the Abaqus Scripting Interface has a convention that all the required modules are i
222. ject created 10 3 5 Return value All commands return a value Many commands return the value void Constructors methods that create an object always return the object being created The return value of a command can be assigned to a variable For example in the following statement the Odb constructor returns an Odb object and the variable newOdb refers to this new object odb Odb newOdb amp Odb new fileName You can use the object returned by a command in subsequent statements The following statement uses the output database created by the previous statement odb Part amp part newOdb Part PART 1 1 odb Enum THREE D odb Enum DEFORMABLE BODY If an exception is raised while a statement is executing the command does not return a value 10 4 How the object model for the output database relates to commands You need to understand the object model for the output database both to read data from it and to write data to it An object model describes the relationship between objects The object model for the Abaqus CAE model is described in The Abaqus object model Section 6 1 For example consider the object model for field output data shown in Figure 10 1 The Odb object at the top of the figure is created when you issue the command to open or create an output database As you move down the object model an OdbStep object is a member of the Odb object similarly a Frame object is a member of the OdbStep o
223. kernel processes unless the current setting for the Run Script In option is local in which case any changed modules are reloaded in the local PDE process Close File Close the current file 7 5 Abaqus PDE BASICS Filename py The name and file extension of the current main file if one is selected Clicking here shows a list of dependent files that were found when the main file was run If the current main file has not been run in the Abaqus PDE this list will be empty Recent Main Files A list of the files that you have opened as the main file for testing Recent Files from previous sessions will be read from the abaqus_pde deps file if it exists in the current directory Recent Traced Files A list of files that were opened by the Abaqus PDE to trace a function called by one of the main files that you tested Recent Files from previous sessions will be read from the abaqus_ pde deps file if it exists in the current directory Recent Files A list of all files that you have opened regardless of whether you opened them to view and edit them or opened them as the main file for testing Recent Files from previous sessions will be read from the abaqus_pde deps file if it exists in the current directory The recently used files lists are stored in the abaqus_pde deps file in the directory from which you start the current Abaqus PDE session If you start an Abaqus PDE session from another location the lists contain only
224. kkkkkkkkkkkkkkkkk Node data for perturbed mesh Input mesh from s Mode shapes used s Imperfection factors used s kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk nnn outFile write header odbName modes factors format 6i 14 7e 14 7e 14 7e n for value in coords values outFile write format value nodeLabel tuple value data outFile write End of perturbed mesh node input file outFile close 9 56 9 10 4 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE Computations with FieldOutput objects This example illustrates how you can operate on FieldOutput objects and save the computed field to the output database The example script does the following Retrieves two specified fields from the output database Computes a new field by subtracting the fields that were retrieved Creates a new Step object in the output database Creates a new Frame object in the new step Creates a new FieldOutput object in the new frame Uses the addData method to add the computed field to the new FieldOutput object Use the following command to retrieve the example script abaqus fetch job fieldOperation The fetch command also retrieves an input file that you can use to generate the output database that is read by the example script FieldOutput operators example problem Script that does computations with fields and saves the results computed to the output da
225. l e S22 The history output data can be retrieved from the HistoryRegion objects in the output database The tutorial output database contains HistoryRegion objects that relate to the rigid body reference point and the integration points of the corner element as follows Node PART 1 1 1000 Element PART 1 1 Element PART 1 1 Element PART 1 1 Element PART 1 1 1 1 1 1 Int Int Int Int Point 1 Point 2 Point 3 Point 4 The following statements read the tutorial output database and write the U2 history data from the second step to an ASCII file that can be plotted by Abaqus CAE odb Step amp step odb Instance amp instance odb rootAssembly instances PART 1 1 odb Set amp nSet const odb Node node odb steps Step 2 instance nodeSets PUNCH nSet nodes constGet 0 odb HistoryPoint hPoint node odb HistoryRegion amp histRegion 10 37 READING FROM AN OUTPUT DATABASE step getHistoryRegion hPoint odb HistoryOutputRepository amp hoCon histRegion historyOutputs odb HistoryOutput amp histOutU2 hoCon U2 odb SequenceSequenceFloat data histOutU2 data int numHDat data size for int i 0 i lt numHDat i odb SequenceFloat pair data il cout lt lt pair constGet 0 lt lt lt lt pair constGet 1 lt lt endl The output in this example is a sequence of tuples containing the frame time and the dis
226. l cost color The values method returns a list of the values of each entry in the dictionary gt gt gt myPart values 3 0 376 0 667 Steel 10 34 Red The items method returns a list of tuples Each tuple contains the key and its value gt gt gt myPart items size 3 0 number 667 material Steel color Red weight 376 0 cost 10 34 You use the has_key method to see if a key exists A return value of 1 indicates the key exists in the dictionary A return value of 0 indicates the key does not exist gt gt gt myPart has key color 1 Python s del statement allows you to delete a variable gt gt gt del myPart You can also use del to delete an item from a dictionary gt gt gt del myPart color gt gt gt myPart has key color 0 You can use the keys values or items methods to loop through a dictionary In the following example items returns two values the first is assigned to property and the second is assigned to setting gt gt gt for property setting in myPart items print property setting size 3 0 weight 376 0 number 667 material Steel cost 10 34 4 23 Oo PROGRAMMING TECHNIQUES 4 6 3 Reading and writing from files Many of the file commands are built in Python commands You do not have to import a module to use file commands You use the open function to create a file gt gt gt myInputFile open
227. l setDefaultDeformedField uField Write stress tensors output only available at top bottom section points The element defined above S4 has 4 integration points Hence there are 4 stress tensors per element Each Field constructor refers to only one layer of section points odb SequenceSequenceFloat topData odb SequenceFloat topDatal for n 1 n lt 5 n topDatal append n for n 0 n lt 8 n topData append topDatal odb SequenceSequenceFloat bottomData odb SequenceFloat bottomDatal for n 1 n lt 5 n bottomDatal append n for n 0 n lt 8 n bottomData append bottomDatal odb SequenceSequenceFloat transform transform 1 0 0 0 1 0 0 0 1 for n 1 n lt 4 n odb SequenceFloat transforml for int m 1 m lt 4 m if m n transforml append 1 else transforml append 0 10 72 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE transform append transforml1 odb SequenceString componentLabels componentLabels append S11 componentLabels append S22 componentLabels append S33 componentLabels append S12 odb SequenceInvariant validInvariants validInvariants append odb Enum MISES fieldName S fieldDescription Stress odb FieldOutput amp sField framel FieldOutput fieldName fieldDescription odb Enum TENSOR_3D_ PLANAR componentLabels validInvariants sField addDat
228. lVertices findAt 0 5 0 v3 allVertices findAt 0 1 0 v4 allVertices findAt 5 1 0 v5 allVertices findAt 1 1 0 v6 allVertices findAt 1 5 0 v7 allVertices findAt 1 0 0 v8 allVertices findAt 5 0 0 v9 allVertices findAt 5 5 0 vw w w wowowo yw wv 8 17 INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS Create a copy of the feature sketch to modify tmpSketch model ConstrainedSketch tmp feature sketch v d tmpSketch vertices tmpSketch dimensions Create some dictionaries to hold results Seed the dictionaries with the theoretical results dispData maxMomentData minMomentData dispData Theoretical 90 001478 80 001409 60 0 000932 40 0 000349 30 0 000148 maxMomentData Theoretical 90 0 0479 80 0 0486 60 0 0425 40 0 0281 30 0 0191 minMomentData Theoretical 90 0 0479 80 0 0448 60 0 0333 40 0 0180 30 0 0108 Loop over the parameters to perform the parameter study for elemCode in elemTypeCodes Convert the element type codes to strings elemName repr elemCode dispData elemName maxMomentData elemName minMomentData elemName Set the element type elemType mesh ElemType elemCode elemCode elemLibrary STANDARD assembly setElementType regions instance faces elemTypes elemType for angle in angles Skew the geometry and
229. ldOutput range S11 Range odb save odb close 10 80 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE return 0 odb FieldOutput computeStressRange odb Step amp step collect stress fields for all load cases odb SequenceFieldOutput sFields odb LoadCaseRepositoryIT iter step loadCases for iter first iter isDone iter next odb Frame frame step getFrame iter currentValue odb FieldOutput amp stressField frame fieldOutputs S sFields append stressField getScalarField S11 compute maximum and minimum envelopes odb SequenceFieldOutput maxFields maxEnvelope sFields odb SequenceFieldOutput minFields minEnvelope sFields compute and return range return maxFields get 0 minFields get 0 10 15 6 A C version of FELBOW This example illustrates the use of a C program to read selected element integration point records from an output database and to postprocess the elbow element results The program creates X Y data that can be plotted with the X Y plotting capability in Abaqus CAE The program performs the same function as the FORTRAN program described in Creation of a data file to facilitate the postprocessing of elbow element results FELBOW Section 14 1 6 of the Abaqus Example Problems Manual The program reads integration point data for elbow elements from an output database to visualize one of the following 1 Variation of an output v
230. ldValue objects History Variable objects or floating point numbers float floating point numbers FO FieldOutput objects FV FieldValue objects HO HistoryOutput objects Table 10 3 shows the valid operations on FieldOutput objects Table 10 3 Valid operations Symbol Operation Return value all float addition all FO FO FO FV FV FV HO HO HO all unary negation all all float subtraction all FO FO FO FV FV FV HO HO HO all float multiplication all all float division all abs all absolute value all acos all arccosine all 10 54 COMPUTATIONS WITH Abaqus RESULTS Symbol Operation Return value asin all arcsine all atan all arctangent all cos all cosine all degreeToRadian convert degrees to all all radians exp all natural exponent all exp10 all base 10 exponent all log all natural logarithm all log10 all base 10 logarithm all float float raise to a power all power FO float FO power FV float FV power HO float HO radianToDegree convert radian to all all degree sin all sine all sqrt all square root all tan all tangent all 10 13 3 Envelope calculations You use envelope calculations to retrieve the extreme value for an output variable over a number of fields Envelope calculations are especially useful for retrieving the extreme values over a num
231. le GUI d temp _abaqusl_ guiLog GUI d temp _abaqusl_ guiLlog xStarting main file GUI Command Message area Watch variable window Line Interface Figure 7 4 The Abaqus PDE debugger The debugger uses a custom Python module named atxPdb based on the Python pdb module You can enter Pdb commands in the debugger CLI you can also enter any Python statements in the debugger CLI Python statements are executed in the same process GUI kernel or local that is running the current script for more information see Running a script Section 7 3 2 Note If you enter a command in the debugger CLI and it does not seem to work it may be conflicting with a Pdb command The call stack area shows the commands that are currently being executed 7 12 USING THE Abaqus PDE The debugger contains a tool to watch variables as scripts are executed To add a variable to the watch list click mouse button 3 over the variable name in the Abaqus PDE main window and select Add Watch variable name from the menu that appears The Abaqus PDE adds the variable to the watch list indicating the namespace that the variable is defined within the variable name the type of data the variable can store the current value and the file and line where the variable is located When you execute or step through the script the variable information is updated as needed You can also activate the watch list tool after starting the deb
232. le determines the variable that distinguishes a deformed plot from an undeformed plot Typically you will use displacement for the default deformed field variable you cannot specify an invariant or a component The default variable settings apply for each frame in the step For example the following statements use the deformation U as the default setting for both field variable and deformed field variable settings during a particular step field odb steps impact frames 1 fieldOutputs U odb steps impact setDefaultField field odb steps impact setDefaultDeformedField field You can set a different default field variable and deformed field variable for different steps You will need to use a loop to set the defaults for each step For example for step in odb steps values step setDefaultField field 9 6 6 Writing history output data History output is output defined for a single point or for values calculated for a portion of the model as a whole such as energy Depending on the type of output expected the historyRegions repository contains data from one of the following e anode e an element or a location in an element e aregion Note History data from an analysis cannot contain multiple points The output from all history requests that relate to a specified point is collected in one HistoryRegion object You use the HistoryPoint constructor to create the point For example pointl HistoryPoint elemen
233. lement hPoint1 For a full description of the HistoryRegion command see HistoryRegion Section 60 11 1 of the Abaqus Scripting Reference Manual You use the HistoryOutput constructor to add variables to the HistoryRegion object odb HistoryOutput amp hol hrl HistoryOutput S11 one component Each HistoryOutput object contains a sequence of frameValue value sequences The HistoryOutput object has a method addData for adding data Each data item is a sequence of frame Value value In a time domain analysis domain TIME the sequence is stepTime value In a frequency domain analysis domain FREQUENCY the sequence is frequency value In a modal domain analysis domain MODAL the sequence is mode value You add the data values as time and data tuples The number of data items must correspond to the number of time items For example 10 50 10 12 EXCEPTION HANDLING IN AN OUTPUT DATABASE hol addData 0 001 0 1 or using two sequences odb SequenceFloat timeData odb SequenceFloat values timeData append 0 001 values append 0 1 hol addData timeData values or using a sequence of sequences odb SequenceSequenceFloat s11 odb SequenceFloat valuel valuel append 0 001 valuel append 0 1 s1l append valuel hol addData s11 Exception handling in an output database Support for C exception handling is provided in the API to the output database For example in your C progra
234. len function is a built in function and is always available when you are using Python To see a list of the built in functions provided by Python type dir builtins __ at the Python prompt Note dir _ builtins is typed as dir underscore underscore builtins underscore underscore You have seen this underscore underscore notation already in Sequences Section 4 5 4 In addition you can look at the standard Python documentation on the official Python web site www python org for a list of built in functions Built in functions are described in the Built in Functions section of the Python Library Reference Many functions however are not built in for example most of the math functions such as sin and cos are not available when you start Python Functions that are not built in are defined in modules Modules are a way of grouping functionality and are similar to a FORTRAN library of subroutines For example the following code could be the opening lines of a Python script The code imports the Python module sys and uses the argv member of sys to print the command line arguments import sys for argument in sys argv print argument You must first import the module to make its functions names and functionality available to the Python interpreter Try the following gt gt gt from math import gt gt gt x pi 4 0 4 26 PROGRAMMING TECHNIQUES gt gt gt sin x 0 707106781187 The first line
235. les containing the frame time and the displacement value The example uses nodal history data output If the analysis requested history output from an element the output database would contain one HistoryRegion object and one HistoryPoint object for each integration point 9 5 9 An example of reading node and element information from an output database The following script illustrates how you can open the output database used by the Abaqus CAE Visualization module tutorial output database and print out some nodal and element information Use the following commands to retrieve the example script and the tutorial output database abaqus fetch job odbElementConnectivity abaqus fetch job viewer tutorial odbElementConnectivity py Script to extract node and element information Command line argument is the path to the output database For each node of each part instance Print the node label and the nodal coordinates For each element of each part instance Print the element label the element type the O OH OH OH OH OH OH OH OH OH 9 22 READING FROM AN OUTPUT DATABASE number of nodes and the element connectivity from odbAccess import import sys Check that an output database was specified if len sys argv 2 print Error you must supply the name of an odb on the command line sys exit 1 Get the command line argument odbPath sys argv 1 Open the output database odb openOdb path odbPath assembly
236. ls workspace or guiLog output Show hide debugger Hj Abaqus PDE d temp _abaqus1_ guiLog I File Edit Settings Window Help 5 x vah file ET x Runin GUI C Kernel C a E i perece D A 2 Stopped gt i E i PHO re T Ignore Breaks Delay ms fo l from abaqusTester import import abaqusGui pressButton Part Toolbox Create pressButton prtG_PartCreateDB Continue resizeViewport Viewport 1 186 25 112 969 moveViewport Viewport 1 0 0 pressButton Sketcher GeomToolbox Rectangle clickInViewport Viewport 1 29 9751 20 0415 1 23928 LEFT_BUTTON clickInViewport Viewport 1 9 9917 1 88797 1 23928 LEFT_BUTTON 10 pressButton Procedure Cancel 11 pressButton prtK_NewPartProc Done 12 pressCheckButton prtG_ExtrudeFeatureDB Include Twist Pitch 13 setTextFieldValue prtG_ExtrudeFeatureDB Pitch 30 14 pressButton prtG_ExtrudeFeatureDB Ok 15 pressButton ErrorDB Dismiss 16 pressButton prtK_NewPartProc Done 17 pressCheckButton prtG_ExtrudeFeatureDB Include Twist Pitch 18 pressCheckButton prtG_ExtrudeFeatureDB Include Draft Angle A 19 setTextFieldValue prtG_ExtrudeFeatureDB Draft 03 WOW Oe WN GUI command Message area Main window line interface Figure 7 1 The Abaqus PDE 7 2 Abaqus PDE basics The following sections contain the basic functions of the PDE e Starting the Abaqus
237. lue 0 1 minAutoCompute OFF minValue 0 0 Establish print preferences session printOptions setValues vpBackground OFF session psOptions setValues orientation LANDSCAPE myViewport viewportAnnotationOptions setValues triad OFF title OFF state OFF myViewport odbDisplay basicOptions setValues coordSystemDisplay OFF For each step obtain the following 1 The step key 2 The number of frames in the step 3 The increment number of the last frame in the step for i in range numSteps stepKey mySteps keys i step mySteps stepKey numFrames len step frames Go to the last frame Display a contour plot Display the step description and the increment number myViewport odbDisplay setFrame step i frame numFrames 1 myViewport odbDisplay display setValues plotState CONTOURS ON DEF Remove white space from the step key and use the result to name the file fileName stepKey replace Print the viewport to a file session printToFile fileName PNG myViewport INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS 8 3 Investigating the skew sensitivity of shell elements In this example you will use Abaqus CAE to create the model and store the model in a model database The script opens the model database and performs a parametric study on the model The example illustrates how you can use a combination of Abaqus CAE and the Abaqus Scripting Interface to analyz
238. ly The output database object model contains only one root assembly Part instances A part instance is a usage of a part within the assembly All characteristics such as mesh and section definitions defined for a part become characteristics for each instance of that part they are inherited by the part instances Each part instance is positioned independently within the root assembly Materials Materials contain material models comprised ofone or more material property definitions The same material models may be used repeatedly within a model each component that uses the same material model shares identical material properties Many materials may exist within a model database but only the materials that are used in the assembly are copied to the output database Sections Sections add the properties that are necessary to define completely the geometric and material properties of an element Various element types require different section types to complete their definitions For example shell elements in a composite part require a section that provides a thickness multiple material models and an orientation for each material model all these pieces combine to complete the composite shell element definition Like materials only those sections that are used in the assembly are copied to the output database Section assignments Section assignments link section definitions to the regions of part instances Section assignments in the o
239. m you may wish to customize the error message when an output database was not opened successfully as follows odb String invalidOdbName invalid odb try catch odb BaseException amp exc cerr lt lt odbBaseException caught n odb Odb amp odb openOdb invalidOdbName cerr lt lt Abaqus error message lt lt exc UserReport CStr lt lt endl cerr lt lt Customized error message here n catch cerr lt lt Unknown Exception n 10 51 5 COMPUTATIONS WITH Abaqus RESULTS For more information see BaseException object Section 63 1 of the Abaqus Scripting Reference Manual 10 13 Computations with Abaqus results The following topics are covered e Rules for the mathematical operations Section 10 13 1 e Valid mathematical operations Section 10 13 2 e Envelope calculations Section 10 13 3 10 13 1 Rules for the mathematical operations Mathematical operations are supported for FieldOutput FieldValue and HistoryOutput objects These operators allow you to perform linear superposition of Abaqus results or to create more complex derived results from Abaqus results The following rules apply e The operations are performed on the components of a tensor or vector e The invariants are computed from the component values For example taking the absolute value of a tensor can result in negative values of the pressure invariant e Operations between Fi
240. mand line and iterates through the following e Each step e Each frame in each step e Each value of von Mises stress in each frame In addition you can supply an optional assembly element set argument from the command line in which case the program searches only the element set for the maximum value of von Mises stress The following illustrates how you can run the example program from the system prompt The program will search the element set ALL ELEMENTS in the viewer tutorial output database for the maximum value of von Mises stress abaqus odbMaxMises py odb viewer tutorial odb elset ALL ELEMENTS Note Ifa command line argument is a String that contains spaces some systems will interpret the String correctly only if it is enclosed in double quotation marks For example ALL ELEMENTS You can also run the example with only the help parameter for a summary of the usage Use the following commands to retrieve the example program and the viewer tutorial output database abaqus fetch job odbMaxMises C abaqus fetch job viewer tutorial 10 62 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE BRR RRR RRR KKK RRR KR KK e He e He e He RE He He He de He e He e He e He He He He He ke He He He He e He He He e He e He He e He Ke odbMaxMises C Code to determine the location and value of the maximum von mises stress in an output database Usage abaqus odbMaxMises odb odbName elset optional elsetName Req
241. mdbAppData None initializeMdb return If my application is not in appData initialize the MDB if not mdbAppData has_ key myAppName initializeMdb return Perform any checks on the appData or customData here Set the verifyMdb method for the application setVerifyMdb may be called only once per application name customKernel setVerifyMdb myAppName verifyMdb def initializeMdb Initialize the MDB here Set the initializeMdb method for this application 5 24 EXTENDING THE Abaqus SCRIPTING INTERFACE setInitializeMdb may be called only once per application name customKernel setInitializeMdb myAppName initializeMdb This file is executed after Abaqus CAE has started so we need to process the initial MDB either a new empty MDB created by Abaqus CAE or a database opened via the database command line argument customKernel processInitialMdb myAppName 5 25 THE Abaqus OBJECT MODEL 6 Using the Abaqus Scripting Interface with Abaqus CAE This section discusses how you can use the Abaqus Scripting Interface to control Abaqus CAE models and analysis jobs The following topics are covered e The Abaqus object model Section 6 1 e Copying and deleting Abaqus Scripting Interface objects Section 6 2 e Abaqus CAE sequences Section 6 3 e Namespace Section 6 4 e Specifying what is displayed in the viewport Section 6 5 e Specifying a regio
242. me executing statements inside loops As a result you can make your scripts more efficient if you consider how Abaqus computes the next value of a loop counter each time the loop is executed If possible you should create an integer or a sequence object to hold the value of a loop counter If you use a value derived from an Abaqus object the time taken to calculate the next value can slow your program significantly The following example uses the number of nodes in a part instance to determine the range of a loop counter const odb SequenceNode amp nodeSequence myInstance nodes for int i 0 i lt nodeSequence size i const odb Node amp myNode nodeSequence i nodeLabel myNode label You can make the program more efficient if you create an object to hold the value of the number of nodes const odb SequenceNode amp nodeSequence myInstance nodes int numNodes nodeSequence size for int i 0 i lt numNodes i const odb Node amp myNode nodeSequence i nodeLabel myNode label You can use this technique only if the maximum value of the loop counter remains fixed for the duration of the loop 10 58 a IMPROVING THE EFFICIENCY OF YOUR SCRIPTS 10 14 2 Creating objects to hold temporary variables To improve the efficiency of scripts that access an output database you should create objects that will be used to hold temporary variables that are accessed multiple times while the p
243. ment file abaqus v6 env For more information see Chapter 19 Parametric Studies of the Abaqus Analysis User s Manual and Using the Abaqus environment settings Section 3 3 1 of the Abaqus Analysis User s Manual 4 1 The following topics are covered Python and Abaqus Section 4 1 Python resources Section 4 2 Using the Python interpreter Section 4 3 Object oriented basics Section 4 4 The basics of Python Section 4 5 Programming techniques Section 4 6 Further reading Section 4 7 Python and Abaqus Python is the standard programming language for Abaqus products and is used in several ways The Abaqus environment file abaqus_v6 env uses Python statements The parameter definitions on the data lines of the PARAMETER option in the Abaqus input file are Python statements The parametric study capability of Abaqus requires the user to write and to execute a Python scripting psf file Abaqus CAE records its commands as a Python script in the replay rpy file You can execute Abaqus CAE tasks directly using a Python script You can execute a script from Abaqus CAE using the following File Run Script from the main menu bar The Macro Manager The command line interface CLI You can access the output database odb using a Python script 4 1 PYTHON RESOURCES 4 2 Python resources Python is an object oriented programming l
244. method of the FieldOutput object to read the data in bulk form The bulkDataBlocks method returns a reference to a sequence of FieldBulkData objects each of which contains the entire output for a class of nodes or elements blocked together into an array The data method of the FieldBulkData object returns an array of data corresponding to the output for the entire class of elements or nodes The length and width methods of theFieldBulkData object return the number of output locations and the number of components at each output location respectively For example 10 31 READING FROM AN OUTPUT DATABASE odb FieldOutput amp disp lastFrame fieldOutputs U const odb SequenceFieldBulkData amp seqDispBulkData disp bulkDataBlocks int numDispBlocks seqDispBulkData size for int iblock 0 iblock lt numDispBlocks iblock const odb FieldBulkData amp bulkData seqDispBulkData iblock int numNodes bulkData length int numComp bulkData width float data bulkData data int nodeLabels bulkData nodeLabels for int node 0 pos 0 node lt numNodes node int nodeLabel nodeLabels node cout lt lt Node lt lt nodeLabel cout lt lt U for int comp 0 comp lt numComp comp cout lt lt data pos lt lt cout lt lt endl The numberOfElements method returns the number of elements in a block When you are accessing the results for elements the numberOfElements method is
245. might create a script that opens an output database displays a contour plot of a selected variable customizes the legend of the contour plot and prints the resulting image on a local PostScript printer In addition scripts are useful for starting Abaqus CAE in a predetermined state For example you can define a standard configuration for printing create remote queues and define a set of standard materials and their properties You can use one of the following methods to run a script Running a script when you start Abaqus CAE You can run a script when you start an Abaqus CAE session by typing the following command abaqus cae script myscript py where myscript py is the name of the file containing the script The equivalent command for Abaqus Viewer is abaqus viewer script myscript py Arguments can be passed into the script by entering on the command line followed by the arguments separated by one or more spaces These arguments will be ignored by the Abaqus CAE execution procedure but they will be accessible within the script For more information see Abaqus CAE execution Section 3 2 4 of the Abaqus Analysis User s Manual and Abaqus Viewer execution Section 3 2 5 of the Abaqus Analysis User s Manual Running a script without the Abaqus CAE GUI You can run a script without the Abaqus CAE GUI by typing the following command abaqus cae noGUI myscript py where myscript py is the name of the file containing the
246. mponent directions 1 2 and 3 of the transformed results will correspond to the system directions X Y and Z for rectangular coordinate systems R 6 and Z for cylindrical coordinate systems and R 6 and for spherical coordinate systems Note Stress results for three dimensional continuum elements transformed into a cylindrical system would have the hoop stress in S22 which is consistent with the coordinate system axis but inconsistent with the stress state for a three dimensional axisymmetric elements having hoop stress in 33 9 41 IMPROVING THE EFFICIENCY OF YOUR SCRIPTS 9 9 e When you are transforming a tensor the location or integration point always takes into account the deformation The location of the coordinate system depends on the model as follows If the system is fixed the coordinate system is fixed If the system is model based you must supply a displacement field that determines the instantaneous location and orientation of the coordinate system Abaqus will perform transformations of tensor results for shells membranes and planar elements as rotations of results about the element normal at the element result location The element normal is the normal computed for the frame associated with the field by Abaqus and you cannot redefine the normal Abaqus defines the location of the results location from the nodal locations You specify optional arguments if you want to use the deformed nodal locations
247. mported at the start of a script and that convention is followed in other example scripts in this manual beamExamp1le py Reproduce the cantilever beam example from the Appendix of the Getting Started with Abaqus Interactive Edition Manual nnn from abaqus import from abaqusConstants import backwardCompatibility setValues includeDeprecated True reportDeprecated Create a model myModel mdb Model name Beam Create a new viewport in which to display the model and the results of the analysis myViewport session Viewport name Cantilever Beam Example origin 20 20 width 150 height 120 a REPRODUCING THE CANTILEVER BEAM TUTORIAL import part Create a sketch for the base feature mySketch myModel ConstrainedSketch name beamProfile sheetSize 250 Create the rectangle mySketch rectangle pointl 100 10 point2 100 10 Create a three dimensional deformable part myBeam myModel Part name Beam dimensionality THREE D type DEFORMABLE BODY Create the part s base feature by extruding the sketch through a distance of 25 0 myBeam BaseSolidExtrude sketch mySketch depth 25 0 import material Create a material mySteel myModel Material name Steel Create the elastic properties youngsModulus is 209 E3 and poissonsRatio is 0 3 elasticProperties 209 E3 0 3 mySteel Elastic table elasticProperties import section Create the solid section
248. n Section 6 6 e Prompting the user for input Section 6 7 e Interacting with Abaqus Standard Abaqus Explicit and Abaqus CFD Section 6 8 e Using Abaqus Scripting Interface commands in your environment file Section 6 9 6 1 The Abaqus object model We have already discussed how Python provides built in objects like integers lists dictionaries and strings When you are writing Abaqus Scripting Interface scripts you need to access these built in objects together with the objects used by Abaqus CAE These Abaqus Scripting Interface objects extend Python with new types of objects The hierarchy and the relationship between these objects is called the Abaqus object model The following sections describe the Abaqus object model in more detail The following topics are covered e An overview of the Abaqus object model Section 6 1 1 e Using tab completion to explore the object model Section 6 1 2 e The Model object model Section 6 1 3 e Using the object model Section 6 1 4 e Abstract base type Section 6 1 5 e Importing modules to extend the object model Section 6 1 6 6 1 1 An overview of the Abaqus object model The object model is an important concept in object oriented programming The object model consists of the following e A definition of each Abaqus Scripting Interface object including its methods and data members The object definitions are found in the Abaqus Scripti
249. n gt gt gt myName yourName Einstein THE BASICS OF PYTHON The second line assigns the string Einstein to the variable myName and assigns the string Newton to the variable yourName The third line assigns the string Einstein to both myName and yourName The following naming rules apply e Variable names must start with a letter or an underscore character and can contain any number of letters digits or underscores load_3 and _frictionStep are legal variable names 3load load_3 and frictionStep are not legal names There is no limit on the length of a variable name e Some words are reserved and cannot be used to name a variable for example print while return and class e Python is case sensitive A variable named Load is different from a variable named load When you assign a variable in a Python program the variable refers to a Python object but the variable is not an object itself For example the expression numSpokes 3 creates a variable that refers to an integer object however numSpokes is not an object You can change the object to which a variable refers numSpokes can refer to a real number on one line an integer on the next line and a viewport on the next line The first example script in Creating a part Section 3 1 created a model using the following statement myModel mdb Model name Model A The constructor mdb Model name Model A creates an instance of a model a
250. n query the FieldValue object to determine the location of a data value for example displacement lastFrame fieldOutputs U fieldValues displacement values For each displacement value print the nodeLabel and data members for v in fieldValues print Node d U x 6 4f Uly 6 4 v data 0 v data 1 9 17 oe v nodeLabel READING FROM AN OUTPUT DATABASE The resulting output is Node 1 U x 0 0000 Uly 76 4580 Node 3 U x 0 0000 Uly 64 6314 Node 5 U x 0 0000 Uly 52 0814 Node 7 U x 0 0000 U y 39 6389 Node 9 U x 0 0000 Uly 28 7779 Node 11 U x 0 0000 U y 20 3237 The data in the Field Value object depend on the field output variable which is displacement in the above example The following command lists all the members of a particular Field Value object fieldValues 0 members _ The resulting output is instance elementLabel nodeLabel position face integrationPoint sectionPoint localCoordSystem type data magnitude mises tresca press inv3 maxPrincipal midPrincipal minPrincipal maxInPlanePrincipal minInPlanePrincipal outOfPlanePrincipal Where applicable you can obtain section point information from the Field Value object 9 5 7 Using regions to read a subset of field output data After you have created an OdbSet object using model data you can use the getSu
251. n to a new frame where the description of the frame is the name of the output database For example for a beam analysis output database called beam_run17 odb the frame description is Beam ODB beam_run17 e The field name is assembled from a concatenation of the step name frame index instance name element and integration point followed by E or S For example Step 1 4 LINEARMESHED 12 1 E Any spaces in a step or instance name are replaced by underscores You can run the script many times for example to create contour data for a particular step increment and integration point along each element of the beam In this case you would also use Result Field Output to select which element to display The contour data generated by the example script are written back to the output database that was originally created by the two dimensional cross section analysis If you want to preserve this database in its original form you must save a copy before you run the example script 9 66 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE 9 10 11 Using infinite elements to compute and view the results of an acoustic far field analysis This example illustrates how you can use the Abaqus Scripting Interface to compute acoustic far field pressure values from infinite element sets and project the results onto a spherical surface for visualization purposes The script extends the acoustic analysis functionality within Abaqus Standard as descri
252. nd this instance is a Python object The object created ismdb models Model A and the variable myMode1 refers to this object An object always has a type In our example the type of mdb models Model A is Model An object s type cannot be changed The type defines the data encapsulated by an object its members and the functions that can manipulate those data its methods Unlike most programming languages you do not need to declare the type of a variable before you use it Python determines the type when the assignment statement is executed The Abaqus Scripting Interface uses the term object to refer to a specific Abaqus type as well as to an instance of that type for example a Model object refers to a Model type and to an instance of a Model type 4 5 2 Python data types Python includes the following built in data types Integer To create variables called i and j that refer to integer objects type the following at the Python prompt gt gt gt i 20 gt gt gt j 64 THE BASICS OF PYTHON An integer is based on a C long and can be compared to a FORTRAN integer 4 or 8 For extremely large integer values you should declare a long integer The size of a long integer is essentially unlimited The L at the end of the number indicates that it is a long integer gt gt gt nodes 2000000L gt gt gt bigNumber 120L 21 Use int n to convert a variable to an integer use Long n to co
253. nd version of the compiler used for the Abaqus release on each supported platform You can access this document through the System Information section of the Support page at www simulia com You can also find information on compiling and linking with the C interface to an output database in the Dassault Syst mes DSX ECO Knowledge Base at www 3ds com support knowledge base or the SIMULIA Online Support System which is accessible through the My Support page at www simulia com The following topics are covered in this section e Jnitializing the C interface Section 10 7 1 e Link library location Section 10 7 2 e Runtime library location Section 10 7 3 e Header file location Section 10 7 4 10 7 1 Initializing the C interface Before any calls are made to the C interface the following call must be made to initialize the interface 10 12 ACCESSING THE C INTERFACE FROM AN EXISTING APPLICATION odb initializeAPI This call is generated automatically when the abaqus make utility is run but must be included in any application that is not compiled and linked using the abaqus make utility After all calls to the C interface have been completed the interface may be deactivated by including a call to odb finalizeAPI If the finalization call is not made explicitly the finalize routine will be called automatically when the application exits 10 7 2 Link library location The libraries necessary to li
254. ned above S4 has 4 integration points Hence there are 4 stress tensors per element Each Field constructor refers to only one layer of section points nunn elementLabelData 1 2 topData 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 9 51 a EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE 1 2 3 4 bottomData 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 transform 1 0 0 O0 1 0 0 0 1 sField framel FieldOutput name S description Stress type TENSOR 3D PLANAR componentLabels S11 S22 S33 S12 validInvariants MISES sField addData position INTEGRATION POINT sectionPoint spTop instance instancel labels elementLabelData data topData localCoordSystem trans form sField addData position INTEGRATION POINT sectionPoint spBot instance instancel labels elementLabelData data bottomData localCoordSystem transform For this step make this the default field for visualization stepl setDefaultField sField History data Create a HistoryRegion for a specific point 9 52 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE hRegionStepl stepl HistoryRegion name historyNode0 description Displacement and reaction force point instancel nodes 0 Create variables f
255. ng Reference Manual 6 1 5 THE Abaqus OBJECT MODEL e Definitions of the relationships between the objects These relationships form the structure or the hierarchy of the object model The relationships between the objects are summarized in the following list Ownership The ownership hierarchy defines the access path to the objects in the Abaqus model Associations Associations describe the relationships between the objects for example whether one object refers to another and whether an object is an instance of another Abaqus extends Python with approximately 500 additional objects and there are many relationships between these objects As a result the complete Abaqus object model is too complex to illustrate in a single figure In general terms the Abaqus object model is divided into the Session the Mdb and the Odb objects as shown in Figure 6 1 session mdb viewport z ewports E models 1 sketches parts odb rootAssembly Container parts IH Singular object sectionCategories steps Figure 6 1 The Abaqus object model An object in the object model can be one of the following Container A Container is an object that contains objects of a similar type A container in the Abaqus object model can be either a repository or a sequence For example the steps container is a repository that contains all the steps in the analysis Your scripts use the steps container to access a step THE Abaqus OBJECT MODEL
256. ng different application names to allow more than one application to register with the same model database Kernel initialization scripts specified by the startup command line option are executed by Abaqus CAE after it has finished its initialization process By that time a new model database or a database specified on the command line using the database option has already been opened A utility method called processInitialMdb has been created to automatically process the initial 5 23 a EXTENDING THE Abaqus SCRIPTING INTERFACE model database for you If the initial model database does not have any customData or does not have customData for your particular application your initializeMdb method will be called Ifthe initial model database has customData for your application your veri fyMdb method will be called The following example shows how you can use the verifyMdb intializeMdb and processInitialMdb methods You should execute the example using the startup command line option when you start Abaqus CAE For more information see Abaqus CAE execution Section 3 2 4 of the Abaqus Analysis User s Manual from abaqus import mdb session import customKernel myAppName My App myAppData customKernel AbaqusAppData myAppData majorVersion 1 myAppData minorVersion 1 myAppData updateVersion 1 customKernel setAppData myAppName myAppData def verifyMdb mdbAppData If there is no appData initialize the MDB if
257. ng files in the Abaqus PDE Section 7 2 3 6 To add more recorded commands to the file position the cursor at the desired location or click End of Main File gt gt i to position the cursor at the end of the file then repeat Step 2 through Step 4 7 Select File Save to save the file or File Save As to save the file with a new name new files automatically use Save As 7 3 2 Running a script The Abaqus PDE runs scripts using one of three processes GUI kernel or local By default guiLog files are run in the Abaqus CAE GUI process If the Abaqus PDE was opened from within Abaqus CAE py files and all other file types are run in the Abaqus CAE kernel process by default If the Abaqus PDE was opened without Abaqus CAE py files are run in the local process by default The local process runs the script without Abaqus CAE using Python in the local PDE process You can change the process by selecting Settings Run Script In and choosing the desired process or by clicking the GUI Kernel or Local radio buttons located above the main window If the Abaqus PDE was opened without Abaqus CAE and you run a script with the GUI or Kernel process Abaqus PDE will start Abaqus CAE to run the script To run the main file click Play gt above the main window The Abaqus PDE runs the main file until it completes encounters an error or reaches a breakpoint As the script runs the current line is highlighted according to the Line Animati
258. ng statement creates an empty tuple myTuple The following statement creates a tuple with one element myTuple 5 675 You can use the tuple function to convert a list or a string to a tuple gt gt gt myList 1 2 stress 4 67 gt gt gt myTuple tuple myList gt gt gt print myTuple 1 2 stress 4 67 gt gt gt myString Failure mode gt gt gt myTuple tuple myString gt gt gt print myTuple F al it TIT eb E i oe el I Ta m 1o 4 Vd 1e The following statements create a tuple and then try to change the value of an item in the tuple An AttributeError error message is generated because a tuple is immutable gt gt gt myTuple 1 2 3 4 5 gt gt gt type myTuple lt type tuple gt gt gt gt myTuple 2 3 Traceback innermost last 4 11 THE BASICS OF PYTHON File line 1 in AttributeError _setitem _ String Strings are immutable sequences of characters Strings are defined by single or double quotation marks You can use the operator to concatenate two strings and create a third string for example gt gt gt odbString Symbol plot from gt gt gt odb loadl odb gt gt gt annotationString odbString odb gt gt gt print annotationString Symbol plot from loadl odb Note You can also use the operator to concatenate tuples and lists Python provides a set of functions that operate on strings
259. nk applications that access the C interface are located in the following directories UNIX abaqus_dirfexec 1br Windows abaqus_dir exec l1br where abaqus_dir is the name of the directory in which Abaqus is installed To determine the location of abaqus_dir at your site type abaqus whereami at an operating system prompt During linking the ABQodb library and several other libraries shipped with the Abaqus release are used to resolve all the functions available in the interface to the output database The command used by Abaqus to link runtime libraries for example for user subroutines is available through the Abaqus environment variable link_sl Additional information about linking with the Abaqus libraries including the names of all libraries which must be specified as part of the link command may be obtained by running the abaqus make utility in verbose mode with a verbosity level of 3 10 7 3 Runtime library location The runtime libraries required to execute a program that accesses the C interface are located in the following directories UNIX abaqus_dirfexec 1br Windows abaqus_dir exec 1lbr where abaqus_dir is the name of the directory in which Abaqus is installed To determine the location of abaqus_dir at your site type abaqus whereami at an operating system prompt 10 13 Oo THE Abaqus C API ARCHITECTURE The correct path to the Abaqus runtime libraries must be specified prior to starting the user application Th
260. nt raw _input Enter frame number odb openOdb odbName Retrieve the displacements from last frame of the last step step odb steps stepName frame step frames frameNo displacement frame fieldOutputs U Create cylindrical coordinate system and compute associated results coordSys odb rootAssembly DatumCsysByThreePoints name cylC coordSysType CYLINDRICAL origin 0 0 0 pointl 1 0 0 0 0 point2 0 0 0 0 1 0 cylindricalDisp displacement getTransformedField datumCsys coordSys radialDisp cylindricalDisp getScalarField componentLabel U1 Compute average radius sum 0 0 for val in radialDisp values sum sum val data aveDisp sum len radialDisp values Compute distortion 9 64 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE distortion radialDisp aveDisp Save computed results to the database frame FieldOutput field radialDisp fieldDescription Distortion average radial displacement str aveDisp frame FieldOutput name Distortion description fieldDescription field distortion odb save odb close 9 10 10 Viewing the analysis of a meshed beam cross section This example illustrates how you can view the results of a meshed beam cross section analysis that was generated using Timoshenko beams as described in Meshed beam cross sections Section 10 6 of the Abaqus Analysis User s Manual Before you execute the example
261. nterValues value 0 const float const data val data numComp cout lt lt Node lt lt val nodeLabel lt lt endl cout lt lt U for int comp 0 comp lt numComp comp cout lt lt data comp lt lt cout lt lt endl The resulting output is Node 1000 U 0 0000 76 4555 The arguments to getSubset are a region an element type a position or section point data The following is a second example that uses an element set to define the region and generates formatted output for the stress at integration points for CAX4 elements from the element set CENT odb Set amp topCenter instance elementSets CENT odb Step amp step2 odb steps Step 2 odb String CAX4 CAX4 odb FieldOutput amp stressField step2 frames 3 fieldOutputs S odb FieldOutput fieldCAx4 stressField getSubset CAX4 10 34 READING FROM AN OUTPUT DATABASE odb FieldOutput fieldIP fieldCAx4 getSubset odb Enum INTEGRATION POINT odb FieldOutput fieldTopCenter fieldIP getSubset topCenter const odb SequenceFieldValue amp vals fieldTopCenter values int valSize vals size int dSize 0 for int 1 0 l lt valSize 1 const odb FieldValue val vals 1 cout lt lt Element label lt lt val elementLabel cout lt lt Integration Point lt lt val integrationPoint cout lt lt endl const float const data val data dSize cout lt
262. nts import import visualization Create a new Viewport for this example myViewport session Viewport name Print a contour plot origin 10 10 width 200 height 100 Open the output database and associate it GENERATING A CUSTOMIZED PLOT with the new viewport odbPath viewer tutorial odb myOdb visualization openOdb path odbPath myViewport setValues displayedObject myOdb Display a contour plot of the output database myViewport odbDisplay display setValues plotState CONTOURS ON DEF Change to the first frame of the third step Remember that indices in Python begin with zero The index of the first frame is 0 The index of the third step is 2 myViewport odbDisplay setFrame step 2 frame 0 Change the number of contour intervals to 10 starting at 0 0 and ending at 0 10 myViewport odbDisplay contourOptions setValues numIntervals 10 maxAutoCompute OFF maxValue 0 10 minAutoCompute OFF minValue 0 0 Generate color output Do not print the viewport decorations or the black background session printOptions setValues rendition COLOR vpDecorations OFF vpBackground OFF Print the viewport to a local PNG format file session printToFile fileName contourPlot format PNG canvasObjects myViewport GENERATING A CUSTOMIZED PLOT 8 2 3 Printing a contour plot at the end of each step The following example script demonstrates how to produce and print a contou
263. nvert a variable to a long integer 279 86 int load gt gt gt load gt gt gt iLoad gt gt gt iLoad 279 gt gt gt a 2 gt gt gt b 64 gt gt gt bigNumber long a b gt gt gt print bigNumber bigNumber bigNumber 18446744073709551616 Note All Abaqus Scripting Interface object types begin with an uppercase character for example a Part or a Viewport An integer is another kind of object and follows the same convention The Abaqus Scripting Interface refers to an integer object as an Int Similarly the Abaqus Scripting Interface refers to a floating point object as a Float Float Floats represent floating point numbers or real numbers You can use exponential notation for floats gt gt gt pi 22 0 7 0 gt gt gt r 2 345e 6 gt gt gt area pi r r gt gt gt print Area area Area 1 728265e 11 A float is based on a C double and can be compared to a FORTRAN real 8 Use float n to convert a variable to a float Complex Complex numbers use the j notation to indicate the imaginary part of the number Python provides methods to manipulate complex numbers The conjugate method calculates the conjugate of a complex number gt gt gt a 2 4j gt gt gt a conjugate 2 4j THE BASICS OF PYTHON A complex number has two members the real member and the imaginary member gt gt gt a 2 4j gt gt gt a real 2 0 gt gt gt a imag
264. of a class An object inherits the members and methods of the class from which it was instanced You should read a Python text book for a thorough discussion of classes abstract base classes and inheritance THE BASICS OF PYTHON 4 5 The basics of Python The following sections introduce you to the basics of the Python language The following topics are covered e Variable names and assignment Section 4 5 1 e Python data types Section 4 5 2 e Determining the type of a variable Section 4 5 3 e Sequences Section 4 5 4 e Sequence operations Section 4 5 5 e Python None Section 4 5 6 e Continuation lines and comments Section 4 5 7 e Printing variables using formatted output Section 4 5 8 e Control blocks Section 4 5 9 4 5 1 Variable names and assignment The expression gt gt gt myName Einstein creates a variable called myName that refers to a String object To see the value of a variable or expression simply type the variable name or the expression at the Python prompt and press Enter For example gt gt gt myName Einstein gt gt gt myName Einstein gt gt gt 3 0 4 0 0 75 gt gt gt x 3 0 4 0 gt gt gt X 0 75 Python creates a variable when you assign a value to it Python provides several forms of the assignment statement for example gt gt gt myName Einstein gt gt gt myName yourName Einstein Newto
265. of the Abaqus Scripting Reference Manual Frames You use the Frame constructor to create a frame for field output For example framel stepl Frame incrementNumber 1 frameValue 0 1 description Fora full description of the Frame command see Frame Section 33 15 3 of the Abaqus Scripting Reference Manual 9 6 4 Writing field output data A FieldOutput object contains a cloud of data values e g stress tensors at each integration point for all elements Each data value has a location type and value You add field output data to a Frame object by first creating a FieldOutput object using the FieldOutput constructor and then adding data to the FieldOutput object using the addData method For example Create the part and the instance partl odb Part name part 1 embeddedSpace THREE D type DEFORMABLE BODY a odb rootAssembly instancel a Instance name part 1 1 object part1 Write nodal displacements uField framel FieldOutput name U description Displacements type VECTOR Create the node labels nodeLabelData 1 2 3 4 5 6 Each set of data corresponds to a node label dispData 1 2 3 4 5 6 7 8 9 9 31 WRITING TO AN OUTPUT DATABASE 10 11 12 13 14 15 16 17 18 Add nodal data to the FieldOutput object using the node labels and the nodal data for this part instance uField addData position NODAL instance instancel labels nodeLabelDat
266. of the model SectionAssignment objects are members of the Odb object For a full description of the assignSection method see assignSection Section 33 16 7 of the Abaqus Scripting Reference Manual All Elements in an Abaqus analysis need to be associated with section and material properties Section assignments provide the relationship between elements in an Instance object and their section properties The section properties include the associated material name To create an element set and assign a section elLabels 1 2 elset instance ElementSetFromElementLabels name materialName elementLabels elLabels instance assignSection region elset section section 9 6 3 Writing results data To write results data to the output database you first create the Step objects that correspond to each step of the analysis If you are writing field output data you also create the Frame objects that will contain the field data History output data are associated with Step objects Steps You use the Step constructor to create a results step for time frequency or modal domain results For example stepl odb Step name step 1 description domain TIME timePeriod 1 0 9 30 WRITING TO AN OUTPUT DATABASE The Step constructor has an optional previousStepName argument that specifies the step after which this step must be inserted in the steps repository For a full description of the Step command see Step Section 33 25 1
267. offices and representatives offer regularly scheduled public training classes The courses are offered in a traditional classroom form and via the Web We also provide training seminars at customer sites All training classes and seminars include workshops to provide as much practical experience with Abaqus as possible For a schedule and descriptions of available classes see www simulia com or call your local office or representative Feedback We welcome any suggestions for improvements to Abaqus software the support program or documentation We will ensure that any enhancement requests you make are considered for future releases If you wish to make a suggestion about the service or products refer to www simulia com Complaints should be addressed by contacting your local office or through www simulia com by visiting the Quality Assurance section of the Support page Contents PART AN INTRODUCTION TO THE Abaqus Scripting Interface 1 An overview of the Abaqus Scripting User s Manual 2 Introduction to the Abaqus Scripting Interface Abaqus CAE and the Abaqus Scripting Interface How does the Abaqus Scripting Interface interact with Abaqus CAE 3 Simple examples Creating a part Reading from an output database Summary PART II USING THE Abaqus Scripting Interface 4 Introduction to Python Python and Abaqus Python resources Using the Python interpreter Object oriented basics The basics of Python Programming techniques Fur
268. oint referencePoints reinforcement reinforcements sectionAssignments sets space surfaces twist type vertex vertices The edges faces vertices cells and ips members are all derived from the GeomSequence object The following statements display some information about the edges sequence gt gt gt print Single edge type type switch edges 0 Single edge type lt type Edge gt gt gt gt print Edge sequence type type switch edges Edge sequence type lt type EdgeArray gt gt gt gt print Members of edge sequence switch edges members _ 6 14 NAMESPACE Members of edge sequence pointsOn gt gt gt print Number of edges in sequence len switch edges Number of edges in sequence 12 MeshSequence A sequence of Nodes or Elements SurfSequence A sequence of Surfaces 6 4 Namespace Namespace is an important concept for the Abaqus Scripting Interface programmer A namespace can be thought of as a program execution environment and namespaces are independent of each other Namespaces prevent conflict between variable names You can use the same variable name to refer to different objects in different name spaces Figure 6 9 illustrates how commands interact with the Abaqus CAE kernel Abaqus Scripting Interface commands are issued to the Python interpreter from either the GUI the command line interface or a script Abaqus CAE executes these command
269. on settings gt gt i Use the other buttons Next Line I gt Stop a Go to Start Ke and Go to End to execute the main file one line at a time stop running the file or reposition the cursor at the beginning or end of the file respectively As you run a script you might want to specify a breakpoint to pause script execution at a particular line For more information about breakpoints see Using breakpoints Section 7 3 4 7 3 3 Using the debugger You can use the debugger in the Abaqus PDE to troubleshoot your scripts To open the debugger select 1 Window Debugger or click Start debugger If you have a script paused in the main window USING THE Abaqus PDE the debugger opens at the current position of the test If you do not have a paused script the debugger automatically begins running the main file and positions the cursor at the start of the script The debugger consists of a call stack area action buttons and the debugger command line interface CLI window as shown in Figure 7 4 The debugger is positioned between the Abaqus PDE main window and the message area Debugger Command Gall Stack area Debug buttons Line Interface CLI execfile r d tem abaqusl_ guilog 1 Pdb s Y gt d temp _abaqusi1_ guiLog 1 gt None gt from abaqusTester import Pdb a Watch List Starting main file GUI d temp _abaqusl_ guiLog jel Completed main fi
270. open upper txt w gt gt gt lines inputFile readlines gt gt gt for line in lines ares newLine line upper eins outputFile write newLine gt gt gt inputFile close gt gt gt outputFile close 4 24 PROGRAMMING TECHNIQUES The first line opens the input file you don t need the r because read only is the default access mode The next line opens a new file to which you will write You read the lines in the input file into a list Finally you enter a loop that converts each line to uppercase characters and writes the result to the output file The final two lines close the files 4 6 4 Error handling When ascript encounters unusual circumstances Python allows you to modify the flow of control through the script and to take the necessary action The action of signaling a problem during execution is called raising or throwing an exception Recognizing the problem is called catching an exception Taking appropriate action is called exception handling Python provides exception handling through the try and except commands For example the following statement attempts to open an existing file for reading gt gt gt outputFile open foam txt If the file does not exist the statement fails and Python displays the following error message gt gt gt outputFile open foam txt Traceback innermost last File lt stdin gt line 1 in IOError 2 No such file or directory If you use
271. or example Figure 5 1 shows the layout of a typical exception description in the online documentation ERROR HANDLING IN THE Abaqus SCRIPTING INTERFACE Standard Abaqus Exceptions Scripting Interface exception P Additional exception RangeError p lf the user attempts to delete the only viewport SystemError the current viewport may not be deleted Exception message Exception type Figure 5 1 The layout of a typical exception description in the online documentation You use the exception type in your error handling routines 5 5 4 Exception handling The Python exception handling techniques described in Error handling Section 4 6 4 apply to the Abaqus Scripting Interface You should use the command description in the Abaqus Scripting Reference Manual to decide for which exception types you need to account For example the following Abaqus Scripting Interface script attempts to create a viewport and prints a message if the width or height are too small try session Viewport name tiny width 1 height 1 except RangeError message print Viewport too small message print Script continues running and prints this line The resulting output is Viewport too small width must be a Float gt 30 Script continues running and prints this line The exception has been handled and the script continues 5 15 a EXTENDING THE Abaqus SCRIPTING INTERFACE 5 6 5 6 Extending the Abaqus Scripting
272. or this history output in stepl houtputStep1U1 hRegionStep1 HistoryOutput name U1 description Displacement type SCALAR hOutputStep1Rfl hRegionStep1 HistoryOutput name RF1 description Reaction Force type SCALAR Add history data for stepl timeDatal 0 0 0 1 0 3 1 0 ulData 0 0 0 1 0 3 0 5 rf1lData 0 0 0 1 0 3 0 5 houtputStep1U1 addData frameValue timeDatal value ulData houtputStep1Rf1 addData frameValue timeDatal value rf1Data Create another step for history data step2 odb Step name step 2 description domain TIME timePeriod 1 0 hRegionStep2 step2 HistoryRegion name historyNode0 description Displacement and reaction force point instancel nodes 0 hOutputStep2U1 hRegionStep2 HistoryOutput name U1 description Displacement type SCALAR hOutputStep2Rf1 hRegionStep2 HistoryOutput name RF1 description Reaction Force type SCALAR Add history data for the second step timeData2 1 2 1 9 3 0 4 0 ulData 0 8 0 9 1 3 1 5 9 53 a EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE if rflData 0 9 1 1 1 3 1 5 hOutputStep2U1 addData frameValue timeData2 value u1Data hOutputStep2Rf1 addData frameValue timeData2 value rf1Data Get XY Data from the two steps ulFromStepl hRegionStepl getSubset variableName U1 ulFromStep2 hRegionStep2 getSubset variableName U1 Square the history
273. orm the envelope calculation env lcIndex maxEnvelope fieldl field2 env lcIndex minEnvelope fieldl field2 env lcIndex maxEnvelope fieldl field2 invariant env lcIndex minEnvelope fieldl field2 invariant env lcIndex maxEnvelope fieldl field2 componentLabel env lcIndex minEnvelope fieldl field2 componentLabel The envelope commands return two FieldOutput objects e The first object contains the requested extreme values e The second object contains the indices of the fields for which the extreme values were found The indices derive from the order in which you supplied the fields to the command The optional invariant argument is a Symbolic Constant specifying the invariant to be used when comparing vectors or tensors The optional componentLabel argument is a odb_String specifying the component of the vector or tensor to be used for selecting the extreme value 9 40 9 8 4 COMPUTATIONS WITH Abaqus RESULTS The following rules apply to envelope calculations Abaqus compares the values using scalar data If you are looking for the extreme value of a vector or a tensor you must supply an invariant or a component label for the selection of the extreme value For example for vectors you can supply the MAGNITUDE invariant and for tensors you can supply the MISES invariant The fields being compared must be similar For example VECTOR and TENS
274. ository Other abstract base types include Amplitude BoundaryCondition Datum Field Interaction and Section The term abstract implies that the Abaqus object model does not contain an object that has the type of an abstract base type For example there are no objects of type Load or Step in the Abaqus object model In contrast the Feature object is a base type but it is not abstract The Abaqus object model includes Feature objects 8 THE Abaqus OBJECT MODEL 6 1 6 Importing modules to extend the object model To access the objects referred to by the Model object such as Part and Section objects Abaqus CAE extends or augments the object model by importing additional modules For example to create or access a Part object Abaqus CAE needs to import the part module Abaqus CAE imports all the modules when you start a session As a result the entire object model is available to your scripts However in some cases your script may need to import a module for example to access a module constant type or function In addition it is useful for you to know which module Abaqus CAE imported to augment the object model with a particular object You have already seen the syntax to import a module import part import section In general you should use the following approach to importing Abaqus modules import modulename The description of an object in the Abaqus Scripting Reference Manual includes an Access section that describes which
275. owing example illustrates how you can store the version number of your application on the appData object import customKernel myAppData customKernel AbaqusAppData myAppData majorVersion 1 myAppData minorVersion 2 myAppData updateVersion 3 You use the setAppData method to install an appData object as session customData appData and to associate it with your application name For example myAppName My App customKernel setAppData myAppName myAppData 5 22 EXTENDING THE Abaqus SCRIPTING INTERFACE You can call the setAppData method only once per application name which prevents unauthorized changes to the method However the setAppData method may be called multiple times using different application names to allow more than one application to register with the same model database When the user saves a model database Abaqus copies the session customData appData object to the mdb customData appData object 5 6 12 Checking a model database when it is opened If you have custom kernel scripts that use custom data in a model database you may want your application to verify some of the contents of a model database before it is fully opened For example you may want to check the database to see if you need to upgrade the data that is stored in it In addition you may need to initialize a new model database with your custom data Two methods are provided for verifying and initializing a model database verifyMdb and initiali
276. perties Interaction properties define the physical behavior of surfaces involved in an interaction Only tangential friction behavior is written to the output database Figure 9 2 shows the model data object model parts elementSets sectionCategories nodeSets materials surfaces Container instances J Singular object eres description nodeSets name surfaces L elements nodes Model Data steps frames ais ale fieldOutputs historyRegions AL HistoryRegion point Results Data historyOutputs Figure 9 2 The model data object model OBJECT MODEL FOR THE OUTPUT DATABASE The objects stored as model data in an output database are similar to the objects stored in an Abaqus CAE model database However the output database does not require a model name because an analysis job always refers to a single model and the resulting output database can contain only one model For example the following Abaqus Scripting Interface statements refer to an Instance object in the model database mdb openMdb pathName users smith mdb hybridVehicle myModel mdb models Transmission myPart myModel rootAssembly instances housing Similar statements refer to an Instance object in the output database odb openOdb path users smith odb transmission odb myPart odb rootAssembly instances housing You can use the prettyPrint method to display a text repres
277. placement value The example uses nodal history data output If the analysis requested history output from an element the output database would contain one HistoryRegion object and one HistoryPoint object for each integration point 10 10 10 An example of reading field data from an output database The following program illustrates how you read model data and field output data from the output database used by the Abaqus CAE Visualization module tutorial output database Import the required modules include lt iostream h gt include lt odb API h gt Open the output database used by the tutorial odb Odb amp odb openOdb viewer tutorial odb Create a variable that refers to the last frame of the first step odb Step amp step odb steps Step 1 odb SequenceFrame amp allFramesInStep step frames int numFrames allFramesInStep size odb Frame amp lastFrame allFramesInStep numFrames 1 Create a variable that refers to the displacement U in the last frame of the first step odb FieldOutput amp displacements lastFrame fieldOutputs get U 10 38 WRITING TO AN OUTPUT DATABASE Create a variable that refers to the node set PUNCH in the part instance PART 1 1 odb Instance amp instance odb rootAssembly instances PART 1 1 odb Set amp nodeSet instance nodeSets PUNCH Create a variable that refers to the displacement of the node set in the last fr
278. ple program abaqus fetch job stressRange The fetch command also retrieves an input file that you can use to generate an output database that can be read by the example program 111111111111111111111111111 1111111111111111111111411 Code to compute a stress range from all the load cases in a step 10 79 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE The stress range is saved to a frame with the description Stress Range System includes if defined HP amp amp defined HKS HPUXI include lt iostream h gt else include lt iostream gt using namespace std endif Begin Local Includes include lt odb_API h gt End Local Includes odb FieldOutput computeStressRange odb Step amp step int ABQmain int argc char argv if arge lt 3 cerr lt lt Usage abaqus stressRange x odb name lt lt step name lt lt endl return 1 odb String odbName argv 1 odb String stepName argv 2 cout lt lt Computing for odb lt lt odbName CStr lt lt cout lt lt and step lt lt stepName CStr lt lt lt lt endl compute stress range and save to odb odb Odb amp odb openOdb odbName odb Step amp step odb steps stepName odb FieldOutput range computeStressRange step Save the results in the output database odb Frame rangeFrame step Frame 0 0 Stress Range rangeFrame Fie
279. plicit AND Abaqus CFD 6 8 3 An example of a callback function The following section describes how you can use a callback function as an alternative to the waitForCompletion method described in Waiting for a job to complete Section 6 8 2 The example uses messaging commands to synchronize a script with an Abaqus Standard Abaqus Explicit or Abaqus CFD analysis Messaging commands set up a callback function that monitors messages from Abaqus Standard Abaqus Explicit and Abaqus CFD When the desired message is received the callback function executes The example uses a callback function that responds to all messages from Abaqus Standard Abaqus Explicit and Abaqus CFD The function decides what action to take based on the messages received from a job called Deform If the message indicates that the analysis job is complete the function opens the output database created by the job and displays a default contour plot Define the callback function from abaqus import from abaqusConstants import import visualization def onMessage jobName messageType data viewport if messageType ABORTED or messageType ERROR print Solver problem stop execution of callback function elif messageType JOB COMPLETED odb visualization openOdb path jobName odb viewport setValues displayedObject odb viewport odbDisplay display setValues plotState CONTOURS ON DEF viewport odbDisplay commonOptions setValues renderStyl
280. pter 59 Material commands of the Abaqus Scripting Reference Manual Sections You use the Section object to create sections and profiles Section objects are members of the Odb object Sections are stored in the sections repository under the Odb object Extend the API commands available to the Odb object using the following statement odb SectionApi sectionApi odb extendApi odb Enum odb SECTION sectionApi The following code creates a homogeneous solid section object A Material object must be present before creating a Section object An exception is thrown if the material does not exist odb String sectionName Homogeneous Solid Section float thickness 2 0 odb HomogeneousSolidSection amp mySection sectionApi HomogeneousSolidSection sectionName mMaterialName thickness To create a circular beam profile object in the output database odb String profileName Circular Profile float radius 10 00 sectionApi CircularProfile profileName radius Section assignments You use the SectionAssignment object to assign sections and their associated material properties to regions of the model SectionAssignment objects are members of the Odb object For a full 10 44 WRITING TO AN OUTPUT DATABASE description of the assignSection method see assignSection Section 60 17 7 of the Abaqus Scripting Reference Manual All Elements in an Abaqus analysis need to be associated with section and material prope
281. put database Section 9 10 2 e An Abaqus Scripting Interface version of FPERT Section 9 10 3 e Computations with FieldOutput objects Section 9 10 4 e Computations with FieldValue objects Section 9 10 5 e Computations with HistoryOutput objects Section 9 10 6 e Creating a new load combination from different load cases Section 9 10 7 e Stress range for multiple load cases Section 9 10 8 e Transformation of field results Section 9 10 9 e Viewing the analysis of a meshed beam cross section Section 9 10 10 e Using infinite elements to compute and view the results of an acoustic far field analysis Section 9 10 11 e An Abaqus Scripting Interface version of FELBOW Section 9 10 12 In addition the Abaqus Scripting Interface examples Reading from an output database Section 3 2 and Investigating the skew sensitivity of shell elements Section 8 3 illustrate how to read data from an output database 9 44 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE 9 10 1 Finding the maximum value of von Mises stress This example illustrates how you can iterate through an output database and search for the maximum value of von Mises stress The script opens the output database specified by the first argument on the command line and iterates through the following e Each step e Each frame in each step e Each value of von Mises stress in each frame In a
282. r Kernel process the Abaqus PDE will start Abaqus CAE to run the script py Default to Kernel Set py files to run in the Abaqus CAE kernel This option is selected by default If py Default to Kernel is not selected py files are run locally Select the GUI or Local radio button to run a Python script in one of these modes without changing the default behavior Line Animation Highlight the line currently being executed in the main window The following animation settings are available e No animation e Animate main file default Highlights only the statements in the main function or method Functions called from the main script are not highlighted e Animate main file functions Highlights the main script statements and the statements in functions that are defined within the main file e Animate all files Highlights the main script statements and statements within all functions for which the source code is available Python Code Control the appearance and editing behavior of Python scripts in the Abaqus PDE main window Syntax Coloring Display the code using various font colors according to its purpose This option is selected by default You can view or change the color selections with the Choose Syntax Colors option 7 8 Abaqus PDE BASICS Python Editing Edit scripts with Python formatting such as indentation included automatically This option is selected by default Choose Syntax Colors Opens the PDE Syntax
283. r plot at the last frame of every step within an output database file The example sets the appropriate contour limits so that all plots can be viewed within a fixed range Use the following command to retrieve the example script abaqus fetch job viewerPrintContours The script does the following e Defines the contour limits function e Determines the final frame of every step within an output database file e Produces a contour plot at the final frame of every step e Prints the contour plot to a file viewerPrintContours py Print a set of contour plots to png files non from abaqus import from abaqusConstants import import visualization Create a viewport for this example myViewport session Viewport name Print contour plot after each step origin 10 10 width 150 height 100 Open the output database and associate it with the viewport Then set the plot state to CONTOURS ON DEF try myOdb visualization openOdb path viewer tutorial odb except AbaqusException value print Error value myViewport setValues displayedObject myOdb myViewport odbDisplay display setValues plotState CONTOURS ON DEF Determine the number of steps in the output database GENERATING A CUSTOMIZED PLOT mySteps myOdb steps numSteps len mySteps Set the maximum and minimum limits of the contour legend myViewport odbDisplay contourOptions setValues numIntervals 10 maxAutoCompute OFF maxVa
284. r plots animations symbol plots and displaced shape plots in the Visualization module of Abaqus CAE You can also use field output to generate an X Y data plot Only complete sets of basic variables for example all the stress or strain components can be requested as field output Field output is composed of a cloud of data values e g stress tensors at each integration point for all elements Each data value has a location type and value You use the regions defined in the model data such as an element set to access subsets of the field output data Figure 9 3 shows the field output data object model within an output database History output History output is output defined for a single point or for values calculated for a portion of the model as a whole such as energy History output is intended for relatively frequent output requests for small portions of the model and can be displayed in the form of X Y data plots in the Visualization module of Abaqus CAE Individual variables such as a particular stress component can be requested Depending on the type of output expected a HistoryRegion object can be defined for one of the following e anode e an integration point OBJECT MODEL FOR THE OUTPUT DATABASE odb _ rootAssembly parts sections materials Container Model Data IH Singular object L steps frames ale fieldOutputs historyRegions L fieldValues Results Data Figu
285. re 9 3 The field output data object model e aregion e the whole model The output from all history requests that relate to a particular point or region is then collected in one HistoryRegion object Figure 9 4 shows the history output data object model within an output database parts Container sections IH Singular object _ materials Model Data L steps frames es fieldOutputs historyRegions historyOutputs peas data Results Data Figure 9 4 The history output data READING FROM AN OUTPUT DATABASE 9 4 Executing a script that accesses an output database If your script accesses and manipulates data in an output database you can use either of the following methods to execute the script e Type abaqus python scriptname py at the system prompt e Select File Run Script from the Abaqus CAE main menu bar and select the file to execute Your script must contain the following statement from odbAccess import In addition if your script refers to any of the Symbolic Constants defined in the Abaqus Scripting Interface your script must contain the following statement from abaqusConstants import If your script accesses or creates material objects or if it accesses or creates section or beam profile objects it must contain the following statements respectively from odbMaterial import from odbSection import 9 5 Reading from an output database The follow
286. reate Names must adhere to the following rules e The name can have up to 38 characters e The name can include spaces and most punctuation marks and special characters however only 7 bit ASCII characters are supported WARNING While Python allows most punctuation marks and special characters some of the strings you provide will be used in an Abaqus input file therefore you cannot use the following characters amp 10 Q 2 when you are naming an object such as a part a model or a job e The name must not begin with a number e The name must not begin or end with an underscore or a space e The name must not contain a period or a double quote RangeError A numeric value is out of range AbaqusError Context dependent message AbaqusException Context dependent message Note The command descriptions in the Abaqus Scripting Reference Manual list the type of standard Abaqus Scripting Interface exceptions that can occur however the exception messages are not included with the command description 5 5 3 Additional Abaqus Scripting Interface exceptions Each command in the Abaqus Scripting Reference Manual lists the standard Abaqus Scripting Interface exceptions that can be raised by a command In addition if the exception is not a standard Python or Abaqus Scripting Interface exception the description lists the following e A brief description of the problem e The exception type e The exception message F
287. reated in large quantities For efficiency the constructors for objects that you create in large quantities such as elements nodes and field values do not follow the capitalized constructor name rule used for persistent objects Nodes elements and field values are created using the addNodes addElements and addData methods respectively For example you use the addNodes method to create and retrieve nodes partl addNodes nodeLabels coordinates nodeSetName const odb SequenceNode amp nodeSeq partl1 nodes 10 15 UTILITY INTERFACE odb Node nodel partl1 nodes 1 10 8 3 Header files To use a class in a C program the relevant header files must be included The naming convention followed is that the file name is the same as the name of the class declared in the header file For example the odb_FieldValue object is declared in the fileodb FieldValue h The file odb API h includes all the header files required to use the API Other header files must be included to use some classes e To access material objects you must include the fileodb MaterialTypes h e To access section objects you must include the fileodb SectionTypes h 10 9 Utility interface The Abaqus C API provides a set of utilities that allow a user to access certain commonly used functionality such as strings sequences lists and repositories quickly and easily using a set of supported and maintained interfaces The following topics are covered
288. red by a second edge face or cell If two entities intersect or coincide at the arbitrary point findAt chooses the first entity that it encounters and you should not rely on the return value being consistent Alternatively if you are working with an existing model that contains named regions you can specify a region by referring to its name For example in the example described in Investigating the skew sensitivity of shell elements Section 8 3 you create a model using Abaqus CAE While you define the model you must create a set that includes the vertex at the center of a planar part and you must name the set CENTER You subsequently run a script that parameterizes the model and performs a series of analyses The script uses the named region to retrieve the displacement and the bending moment at the center of the plate The following statement refers to the set that you created and named using Abaqus CAE centerNSet odb rootAssembly nodeSets CENTER The following script illustrates how you can create a region Regions are created from each of the following e A sequence of tuples indicating the vertices edges faces or cells in the region The sequence can include multiple tuples of the same type 6 18 SPECIFYING A REGION e A sequence of tuples indicating a combination of the vertices edges faces and cells in the region The tuples can appear in any order in the sequence In addition you can include multiple tuples of
289. relastic material odb Hyperelastic hyperelastic myMaterial hyperelastic if hyperelastic hasValue bool testData hyperelastic testData odb BiaxialTestData biaxialTestData 10 25 READING FROM AN OUTPUT DATABASE hyperelastic biaxialTestData odb String smoothingType smoothing type if biaxialTestData hasValue odb Union smoothing biaxialTestData smoothing switch smoothing type case odb UNION STRING smoothingType append smoothing getString break case odb UNION INT smoothingType append smoothing getInt break case odb UNION FLOAT smoothingType append smoothing getFloat break case odb UNION DOUBLE smoothingType append smoothing getDouble break case odb UNION BOOL smoothingType append smoothing getBool break cout lt lt smoothingType CStr lt lt endl Chapter 59 Material commands of the Abaqus Scripting Reference Manual describes the Material object commands in more detail the odb_ Union object is defined in Union object Section 63 6 of the Abaqus Scripting Reference Manual Sections Sections are stored in the sections repository under the Odb object Extend the Section commands available to the Odb object using the following statement odb SectionApi sectionApi odb extendApi odb Enum odb SECTION sectionApi The following statements display the repository keys of the sections in an output database
290. reter that is built into the Abaqus CAE GUI You can use the kernel command line interface in Abaqus CAE for similar tasks Each command line interface includes primary gt gt gt and secondary prompts to indicate when you must indent commands to comply with Python syntax After you use the GUI command line interface click bl to display the message area If new messages are generated in the message area while the GUI command line interface is active the background around the message area icon turns red The background reverts to its normal color when you display the message area 7 9 USING THE Abaqus PDE 7 3 Using the Abaqus PDE The following sections contain detailed information that you can use to create and work with files in the Abaqus PDE e Creating guiLog files Section 7 3 1 e Running a script Section 7 3 2 e Using the debugger Section 7 3 3 e Using breakpoints Section 7 3 4 e Using the Abaqus PDE with plug ins Section 7 3 5 e Using the Abaqus PDE with custom applications Section 7 3 6 7 3 1 Creating guiLog files The Abaqus PDE is designed to work any type of Python files including guiLog files A guiLog is a Python script that records actions in the Abaqus CAE GUI When you create a guiLog it records every mouse click dialog box entry and menu tool or viewport selection To record actions from Abaqus CAE the Abaqus PDE session must be associated with a A
291. rface How to use Abaqus objects 5 Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE 10 3 How to compile and link your C source code Abaqus Scripting Interface documentation style This section describes the style that is used to describe a command in the Abaqus Scripting Reference Manual You may want to refer to the Abaqus Scripting Reference Manual while you read this section and compare the style of a documented command with the descriptions provided here The following topics are covered 10 3 1 How the commands are ordered Section 10 3 1 Access Section 10 3 2 Path Section 10 3 3 Prototype Section 10 3 4 Return value Section 10 3 5 How the commands are ordered The following list describes the order in which commands are documented in the Abaqus Scripting Reference Manual Chapters are grouped alphabetically by functionality In general the functionality corresponds to the modules and toolsets that are found in Abaqus CAE for example Chapter 3 Amplitude commands of the Abaqus Scripting Reference Manual Chapter 4 Animation commands of the Abaqus Scripting Reference Manual and Chapter 6 Assembly commands of the Abaqus Scripting Reference Manual Within each chapter the primary objects appear first and are followed by other objects in alphabetical order For example in Chapter 30 Mesh commands of the Abaqus Scripting Reference Manual the objects
292. rogram is executing For example if the program accesses the temporary variable while inside a loop that is executed many times creating an object to hold the variable will speed up your program significantly The following example examines the von Mises stress in each element during a particular frame of field output If the stress is greater than a certain maximum value the program prints the strain components for the element odb FieldOutputRepository amp fieldRep framel fieldOutputs odb FieldOutput amp stressField fieldRep get S odb FieldOutput amp strainField fieldRep get LE const odb SequenceFieldValue amp seqStressVal stressField values int numFV seqStressVal size int strainComp 0 for int loc 0 loc lt numFV loc const odb FieldValue stressVal seqStressVal loc if stressVal mises gt stressCap cout lt lt Element label lt lt stressVal elementLabel lt lt endl cout lt lt Integration Point lt lt stressVal integrationPoint lt lt endl const odb SequenceFieldValue amp seqStrainVal strainField values const odb FieldValue strainVal seqStrainVal loc const float const data strainVal data strainComp cout lt lt LE for int comp 0 comp lt strainComp comp cout lt lt data comp cout lt lt endl In this example every time the script calls the strainField values method Abaqus must reconstruct the sequence of FieldV
293. rs FO FieldOutput objects FV FieldValue objects HO HistoryOutput objects 9 38 COMPUTATIONS WITH Abaqus RESULTS Table 9 3 shows the valid operations on FieldOutput objects Table 9 3 Valid operations Symbol Operation Return value all float addition all FO FO FO FV FV FV HO HO HO all unary negation all all float subtraction all FO FO FO FV FV FV HO HO HO all float multiplication all all float division all abs all absolute value all acos all arccosine all asin all arcsine all atan all arctangent all cos all cosine all degreeToRadian convert degrees to all all radians exp all natural exponent all exp10 all base 10 exponent all log all natural logarithm all log10 all base 10 logarithm all float float raise to a power all power FO float FO 9 39 5 COMPUTATIONS WITH Abaqus RESULTS Symbol Operation Return value power FV float FV power HO float HO radianToDegree convert radian to all all degree sin all sine all sqrt all square root all tan all tangent all 9 8 3 Envelope calculations You use envelope calculations to retrieve the extreme value for an output variable over a number of fields Envelope calculations are especially useful for retrieving the extreme values over a number of load cases The following operators consider a list of fields and perf
294. rt from abaqusConstants import import visualization myViewport session Viewport name Superposition example origin 10 10 width 150 height 100 Open the tutorial output database myOdb visualization openOdb path viewer tutorial odb Associate the output database with the viewport READING FROM AN OUTPUT DATABASE 3 2 2 myViewport setValues displayedObject myOdb Create variables that refer to the first two steps firstStep myOdb steps Step 1 secondStep myOdb steps Step 2 Read displacement and stress data from the last frame of the first two steps framel firstStep frames 1 frame2 secondStep frames 1 displacement1 framel fieldoutputs U displacement2 frame2 fieldOutputs U stressl framel fieldOutputs S stress2 frame2 fieldOutputs S Find the added displacement and stress caused by the loading in the second step deltaDisplacement displacement2 displacement1 deltaStress stress2 stressl Create a Mises stress contour plot of the result myViewport odbDisplay setDeformedVariable deltaDisplacement myViewport odbDisplay setPrimaryVariable field deltaStress outputPosition INTEGRATION POINT refinement INVARIANT Mises myViewport odbDisplay display setValues plotState CONTOURS ON DEF How does the script work This section explains each portion of the example script READING FROM AN OUTPUT DATABASE from abaqus import
295. rties Section assignments provide the relationship between elements in an Instance object and their section properties The section properties include the associated material name To create an element set and assign a section odb SequenceInt setLabels setLabels append 1 setLabels append 2 elsetName Material 1 odb Set amp elset instance ElementSet elsetName setLabels section assignment on instance instance assignSection elset section 10 11 3 Writing results data To write results data to the output database you first create the Step objects that correspond to each step of the analysis If you are writing field output data you also create the Frame objects that will contain the field data History output data are associated with Step objects Steps You use the Step constructor to create a results step for time frequency or modal domain results For example odb Step amp stepl odb Step si1 Perturbation Step odb Enum TIME odb Step amp step2 odb Step sT Time domain analysis odb Enum TIME 1 0 odb Step amp step3 odb Step sF Frequency analysis odb Enum FREQUENCY 123 4 The Step constructor has an optional previousStepName argument that specifies the step after which this step must be inserted in the steps repository For a full description of the Step command see Step Section 60 26 1 of the Abaqus Scripting Reference Manual Frames You use the Frame const
296. ructor to create a frame for field output For example 10 45 WRITING TO AN OUTPUT DATABASE odb Frame frameOne step2 Frame 1 0 3 first frame For a full description of the Frame command see Frame Section 60 16 3 of the Abaqus Scripting Reference Manual 10 11 4 Writing field output data A FieldOutput object contains a cloud of data values e g stress tensors at each integration point for all elements Each data value has a location type and value You add field output data to a Frame object by first creating a FieldOutput object using the FieldOutput constructor and then adding data to the FieldOutput object using the addData method For example vector odb SequenceString vectorCompLabels vectorCompLabels append 1 vectorCompLabels append 2 vectorCompLabels append 3 odb SequenceInvariant vectorInvar vectorInvar append odb Enum MAGNITUDE odb FieldOutput amp vectorField frameOne FieldOutput U displacement vector odb Enum VECTOR vectorCompLabels vectorInvar odb SequenceInt labels2 labels2 append 3 labels2 append 5 odb SequenceSequenceFloat vecDat odb SequenceFloat v1 vl append 1 1 vl append 1 2 vl append 1 3 vecDat append v1 odb SequenceFloat v2 v2 append 2 1 v2 append 2 2 v2 append 2 3 vecDat append v2 vectorField addData odb Enum NODAL instanceA labels2 vecDat 10 46 WRITING TO AN OUTPUT DATABASE For a
297. ructors methods that create an object always return the object being created The return value ofa command can be assigned to a Python variable For example in the following statement the Viewport constructor returns a Viewport object and the variable newViewport refers to this new object newViewport session Viewport name myViewport origin 10 10 width 100 height 50 You can use the object returned by a command in subsequent statements For example the titlebar member of a Viewport object is a Boolean specifying whether the viewport title bar is displayed and can have a value of either ON or OFF The following statement tests the titlebar member of the new viewport created by the previous statement if newViewport titleBar print The title bar will be displayed Abaqus SCRIPTING INTERFACE DATA TYPES 5 3 Abaqus Scripting Interface data types The standard Python data types described in Python data types Section 4 5 2 include integers floats strings and sequences The Abaqus Scripting Interface adds over 500 additional data types The following sections describe the most common Abaqus Scripting Interface data types e SymbolicConstants Section 5 3 1 e Booleans Section 5 3 2 e Repositories Section 5 3 3 5 3 1 SymbolicConstants Some arguments require that you provide a SymbolicConstant SymbolicConstants are defined by the Abaqus Scripting Interface and are written in all capital letters If
298. s Sections add the properties that are necessary to define completely the geometric and material properties of an element Various element types require different section types to complete their definitions For example shell elements in a composite part require a section that provides a thickness multiple material models and an orientation for each material model all these pieces combine to complete the composite shell element definition Like materials only those sections that are used in the assembly are copied to the output database Section assignments Section assignments link section definitions to the regions of part instances Section assignments in the output database maintain this association Sections are assigned to each part in a model and the section assignments are propagated to each instance of that part Section categories You use section categories to group the regions of the model that use the same section definitions for example the regions that use a shell section with five section points Within a section category you use the section points to identify the location of results for example you can associate section point 1 with the top surface of a shell and section point 5 with the bottom surface Analytical rigid surface Analytical rigid surfaces are geometric surfaces with profiles that can be described with straight and curved line segments Using analytical rigid surfaces offers important advantages in contac
299. s Explicit or Abaqus CFD You can skip this section of the manual if you are not working with Abaqus CAE Example scripts This section provides a set of example scripts that lead you through the cantilever beam tutorial found in Appendix B Creating and Analyzing a Simple Model in Abaqus CAE of Getting Started with Abaqus Interactive Edition Additional examples are provided that read from an output database display a contour plot and print a contour plot from each step of the analysis The final example illustrates how you can read from a model database created by Abaqus CAE parameterize the model submit a set of analysis jobs and generate results from the resulting output databases 1 1 5 AN OVERVIEW OF THE Abaqus SCRIPTING USER S MANUAL Using the Abaqus Scripting Interface to access an output database When you execute an analysis job Abaqus Standard Abaqus Explicit and Abaqus CFD store the results of the analysis in an output database odb file that can be viewed in the Visualization module of Abaqus CAE or in Abaqus Viewer This section describes how you use the Abaqus Scripting Interface to access the data stored in an output database You can do the following with the Abaqus Scripting Interface e Read model data describing the geometry of the parts and the assembly for example nodal coordinates element connectivity and element type and shape e Read model data describing the sections and materials and where
300. s at various points in space and results on several spheres will be written to the output database To see how the script operates on a single triangular element model use the following command to retrieve the input file abaqus fetch job singleTriangularElementModel Use the following command to create the corresponding output database abaqus job singleTriangularElementModel The results from running the script twice using the single triangular element model changing the radius of the sphere and writing the data back to the original output database are shown in Figure 9 6 9 69 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE POR 1 000e 03 9 294e 04 8 587e 04 7 881e 04 7 174e 04 6 468e 04 5 761e 04 5 055e 04 4 348e 04 3 642e 04 2 935e 04 2 229e 04 1 523e 04 Figure 9 6 Displaying the acoustic pressure on several spheres This model simulates the response of a sphere in breathing mode a uniform radial expansion compression mode The model consists of one triangular ACIN3D3 element Each node of the element is placed on a coordinate axis at a distance of 1 0 from the origin that serves as the reference point for the infinite element The acoustic material properties do not have physical significance the values used are for convenience only The loading consists of applying an in phase pressure boundary condition to all the nodes Under this loading and geometry the model behaves as a spherical
301. s available to your program you also need to include their output database classes include lt odb MaterialTypes h gt include lt odb SectionTypes h gt 10 10 3 Opening an output database You use the openOdb method to open an existing output database For example the following statement opens the output database used by the Abaqus CAE Visualization module tutorial odb Odb amp odb openOdb viewer tutorial odb After you open the output database you can access its contents using the methods and members of the Odb object returned by the openOdb method In the above example the Odb object is referred to by the variable odb For a full description of the openOdb command see openOdb Section 60 33 5 of the Abaqus Scripting Reference Manual 10 10 4 Reading model data The following list describes the objects in model data and the commands you use to read model data Many of the objects are repositories and you will find it useful to use the repository iterators to determine the keys of the repositories For more information on repositories and sequences see Utility interface Section 10 9 The root assembly An output database contains only one root assembly You access the root assembly through the OdbAssembly object odb Assembly amp rootAssy odb rootAssembly 10 20 READING FROM AN OUTPUT DATABASE Part instances Part instances are stored in the instance repository under the OdbAssembly object The
302. s in one of two namespaces Script namespace Abaqus Scripting Interface commands issued from scripts and from the command line interface are executed in the script namespace Commands issued from File Run Script are also executed in the script namespace For example if you enter the following statement from the command line interface to create a viewport myViewport session Viewport name newViewport width 100 height 100 the variable myViewport exists only in the script namespace The name of the script namespace is main Journal namespace Abaqus Scripting Interface commands issued by the GUI are executed in the journal namespace For example if you use the GUI to partition an edge Abaqus CAE writes the following statements to the replay file abaqus rpy pl mdb models Model A parts Part 3D A e pl edges edges e 23 6 15 NAMESPACE The variables defined in the replay file p1 e and edges in the above example exist only in the journal namespace Abaqus CAE issues an exception if you attempt to refer to one of these variables from the script namespace For example the following statement was issued from the Abaqus CAE command line GUI interface Script CLI oS commands Ta Python interpreter Abaqus CAE kernel replay files input file i Abaqus Standard Abaqus Explicit Abaqus CFD Abaqus Design i output database command line interface an
303. script The equivalent command for Abaqus Viewer is a HOW DOES THE Abaqus SCRIPTING INTERFACE INTERACT WITH Abaqus CAE abaqus viewer noGUI myscript py The Abaqus CAE kernel is started without the GUI Running a script without the Abaqus CAE GUI is useful for automating pre or postanalysis processing tasks without the added expense of running a display When the script finishes running the Abaqus CAE kernel terminates If you execute a script without the GUI the script cannot interact with the user monitor jobs or generate animations When running a script without the user interface jobs are always run interactively If a job queue is specified it will be ignored Running a script from the startup screen When you start an Abaqus CAE session Abaqus displays the startup screen You can run a script from the startup screen by clicking Run Script Abaqus displays the Run Script dialog box and you select the file containing the script Running a script from the File menu You can run a script by selecting File Run Script from the main menu bar Abaqus displays the Run Script dialog box and you select the file containing the script Running a script from the command line interface You can run a script from the command line interface CLI by typing the following command execfile myscript py where myscript py is the name of the file containing the script and the file in this example is in the current directory Figure 2 2 s
304. script you must run two analyses that create the following output database files e An output database generated by the two dimensional cross section analysis The script reads cross section data including the out of plane warping function from this output database e An output database generated by the beam analysis The script reads generalized section strains SE from this output database Use the following command to retrieve the example script abaqus fetch job compositeBeam You must run the script from Abaqus CAE by selecting File Run Script from the main menu bar The script uses get Inputs to display a dialog box that prompts you for the name of the output databases generated by the two dimensional cross section analysis and by the beam analysis The names are case insensitive and you can omit the odb file suffix The files must be in the local directory The dialog box also prompts you for the following e The name of the step e The increment or mode number for a frequency analysis 9 65 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE e The name of the load case if any e The name of the part instance e The element number e The integration point number If you do not enter a value in a field the script looks in the beam analysis output database for possible values The script then enters a default value in the dialog box and displays information about the range of possible values in the Abaqus CA
305. section categories odb String sectionCategoryName S5 odb String sectionCategoryDescription Five Layered Shell odb SectionCategory amp sCat odb SectionCategory sectionCategoryName sectionCategoryDescription int sectionPointNumber 1 odb String sectionPointDescription Bottom odb SectionPoint spBot sCat SectionPoint sectionPointNumber sectionPointDescription sectionPointNumber 3 sectionPointDescription Middle odb SectionPoint spMid sCat SectionPoint sectionPointNumber sectionPointDescription sectionPointNumber 5 sectionPointDescription Top odb SectionPoint spTop sCat SectionPoint sectionPointNumber sectionPointDescription Create few materials odb MaterialApi materialApi odb extendApi odb Enum odb MATERIAL materialApi odb String materialName Elastic Material odb Material amp material 1 materialApi Material materialName odb SequenceSequenceDouble myTable odb SequenceDouble myData myData append 12000 00 youngs modulus myData append 0 3 poissons ratio myTable append myData odb String type ISOTROPIC bool noCompression false bool noTension false bool temperatureDependency false int dependencies 0 odb String moduli LONG TERM material 1 Elastic myTable type noCompression 10 69 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE noTension temperatureDependency dependencies moduli create few sect
306. ser defined executables and subroutines Section 3 2 14 of the Abaqus Analysis User s Manual To link properly 10 11 ACCESSING THE C INTERFACE FROM AN EXISTING APPLICATION the programs cannot contain a C main routine Instead the programs must begin with a C function called ABQmain include lt odb API h gt int ABQmain int argc char argv Insert user code here return 0 The arguments passed into the program upon execution will be passed into ABQmain as though it were the standard C main function The compile and link commands used by the abaqus make utility are determined by the settings of the compile_cpp and link parameters in the Abaqus environment file 10 7 Accessing the C interface from an existing application This section provides information that may be helpful to users who need to access results in an output database from an existing application Most users should find that the abaqus make utility is sufficient for their postprocessing needs Since linking and executing with dynamically linked runtime libraries is highly system dependent the information in this section is intended for users who have an advanced working knowledge of compilation and linking with runtime libraries It is important to ensure that the compiler used to compile and link the existing application is consistent with the compilers used to generate the Abaqus release The System Requirements document lists the name a
307. shown in Figure 3 1 The example scripts from this manual can be copied to the user s working directory by using the Abaqus fetch utility abaqus fetch jobsscriptName where scriptName py is the name of the script see Fetching sample input files Section 3 2 13 of the Abaqus Analysis User s Manual Use the following command to retrieve the script for this example abaqus fetch job modelAExample Note Abaqus does not install the sample scripts by default during the installation procedure As a result if the Abaqus fetch utility fails to find the sample script the script may be missing from your Abaqus installation You must rerun the installation procedure and request Abaqus sample problems from the list of items to install 3 1 CREATING A PART G viewport for Model A Model Model amp Part Part A Figure 3 1 The example creates a new viewport and a part To run the program do the following 1 Start Abaqus CAE by typing abaqus cae 2 From the startup screen select Run Script 3 From the Run Script dialog box that appears select modelAExample py 4 Click OK to run the script Note If Abaqus CAE is already running you can run the script by selecting File gt Run Script from the main menu bar 3 1 1 The example script modelAExample py A simple example Creating a part nunun from abaqus import from abaqusConstants import backwardCompatibility setValues includeDeprecated True reportDeprecate
308. sing the script name to the command line options start replay or noGUI 1 Requesting a single input from the user The getInput function displays a dialog box in the center of the main window and the user enters the requested value in the text field in the dialog box The value is returned to the executing script as a String after the user presses the Enter key or clicks OK Optionally you can specify a default value to be displayed in the text field The get Input function does not provide any error checking it is the script author s responsibility to verify the user input For more information see getInput Section 52 5 1 of the Abaqus Scripting Reference Manual The following examples illustrate the use of the getInput function The first example shows a script that uses the getInput function to obtain a number from the user The script then prints the square root of that number from abaqus import getInput from math import sqrt number float getInput Enter a number print sqrt number The float function on the third line converts the string returned by get Input into a floating point number The following figure shows the dialog box that appears when this script is executed 6 22 PROMPTING THE USER FOR INPUT Enter a number Cancel The next example shows how to modify a macro recorded by the Macro Manager in Abaqus CAE to use the getInput function The following text shows a macro named createVie
309. specifying the host name of the machine that is running the analysis clientName A String specifying the name of the client that sent the message Possible values are BatchPre the input file preprocessor Packager the Abaqus Explicit preprocessor packager Standard the Abaqus Standard analysis Explicit the Abaqus Explicit analysis Calculator the postprocessing calculator phase A SymbolicConstant specifying the phase of the analysis Possible values are e BATCHPRE PHASE e PACKAGER PHASE e STANDARD PHASE e EXPLICIT PHASE e CFD PHASE 6 27 a INTERACTING WITH Abaqus Standard Abaqus Explicit AND Abaqus CFD e CALCULATOR PHASE e HEALER PHASE processId An Int specifying the process ID of the analysis program threadId An Int specifying the thread ID of the analysis program Threads are used for parallel or multiprocessing in most cases threadld is set to zero timeStamp An Int specifying the time the message was sent in seconds since 00 00 00 UTC January 1 1970 e userData Any Python object or None This object is passed as the userData argument to addMessageCallback The following script is an example of how you can use the messaging capability of the Abaqus Scripting Interface The callback function will intercept all messages from Abaqus Standard Abaqus Explicit or Abaqus CFD and print the messages in the Abaqus CAE command line interfac
310. ss import get field odb openOdb path sumRegionFieldValue odb endSet odb rootAssembly elementSets END1 field odb steps values 1 frames 1 fieldOutputs S subField field getSubset region endSet 9 58 9 10 6 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE sum values sum 0 for val in subField values sum sum val ave sum len subField values print results print Component Sum labels field componentLabels for i in range len labels print s 5 3e Average 5 3e labels i sum datal il ave data i Computations with HistoryOutput objects This example illustrates how you can use the historyOutput operators to compute the displacement magnitude from the components The example script does the following Retrieves the node of interest using a nodeSet Uses the node of interest to construct a HistoryPoint object Uses the HistoryPoint to retrieve the historyRegion Computes the displacement magnitude history from the displacement component HistoryOutput objects in the historyRegion Scales the displacement magnitude history using a predefined value Prints the displacement magnitude history Use the following command to retrieve the example script abaqus fetch job compDispMagHist The fetch command also retrieves an input file that you can use to generate the output database that is read by the example scrip
311. string No Yes Yes stress array Yes Yes Yes array 1 2 2 3 2 5 5 8 Mutable Elements can be added changed and removed Homogeneous Elements must be of the same type Methods The type has methods that can be used to manipulate the sequence for example sort reverse Syntax The syntax used to create the sequence List Lists are mutable heterogeneous sequences anything that can be modified is called mutable A list can be a sequence of strings integers floats or any combination of these In fact a list can contain any type of object for example gt gt gt myIntegerList 7 6 5 4 gt gt gt myFloatList 7 1 6 5 5 3 4 8 You can refer to individual items from a sequence using the index of the item Indices start at zero Negative indices count backward from the end of a sequence gt gt gt myList 1 2 3 gt gt gt myList 0 1 gt gt gt myList 1 gt gt gt myList 1 9 3 gt gt gt myNewList 1 0 2 0 myList gt gt gt myNewList 1 0 2 0 1 9 3 gt gt gt myNewList 1 1 9 3 Il Ko Lists are heterogeneous which means they can contain objects of different type gt gt gt myList 1 2 5 steel A list can contain other lists gt gt gt myList 0 1 2 3 4 5 6 7 8 THE BASICS OF PYTHON gt gt gt myList 0 0 1 2 gt gt gt myList 2 6 7 8 myList 1 2 refers to the third item in the second list Remember indices start
312. such as setting the element type and creating the mesh use the region argument to specify where the operation should be applied e Set commands use the region argument to specify the region that comprises the set A region can be either a predefined Set or Surface object or a temporary Region object For more information see Chapter 44 Region commands of the Abaqus Scripting Reference Manual You should not rely on the integer id to identify a vertex edge face or cell in a region command for example myFace myModel parts Door faces 3 The id can change if you add or delete features to your model in addition the id can change with a new release of Abaqus Rather than using the integer id you should use the findAt method to identify a vertex edge face or cell The arguments to indAt are an arbitrary point on an edge face or cell or the X Y and Z coordinates of a vertex indAt returns an object that contains the id of the vertex or the id of the edge face or cell that includes the arbitrary point findAt initially uses the ACIS tolerance of 1E 6 As a result findAt returns any entity that is at the arbitrary point specified or at a distance of less than 1E 6 from the arbitrary point If nothing is found findAt uses the tolerance for imprecise geometry applicable only for imprecise geometric entities If necessary it can open the tolerance further to find a suitable object The arbitrary point must not be sha
313. t HistoryOutput operators example problem Compute magnitude of node displacement history from displacement components and scale relative to given 9 59 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE allowable displacement from odbAccess import get historyRegion for the node in nodeSet TIP odb openOdb path compDispMagHist odb endSet odb rootAssembly instances BEAM 1 1 nodeSets TIP histPoint HistoryPoint node endSet nodes 0 tipHistories odb steps Step 2 getHistoryRegion point histPoint Compute and scale magnitude maxAllowableDisp 5 0 sum 0 componentLabels U1 U2 U3 for name in componentLabels sum sum power tipHistories historyOutputs name 2 0 sum sqrt sum maxAllowableDisp Print magnitude print History sum name print Time Magnitude for dataPair in sum data print 5 4f 5 2 dataPair 0 dataPair 1 9 10 7 Creating a new load combination from different load cases This example illustrates how you can use the frame operators to create a new load combination from existing load cases The example script does the following 9 60 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE Retrieves the information describing the new load combination from the command line Retrieves the frames for each load case Computes the new stresses and displacements Saves data computed to the ou
314. t modeling Rigid bodies You use rigid bodies to define a collection of nodes elements and or surfaces whose motion is governed by the motion of a single node called the rigid body reference node Pretension Sections Pretension sections are used to associate a pre tension node with a pre tension section The pre tension section can be defined using a surface for continuum elements or using an element for truss or beam elements 10 8 OBJECT MODEL FOR THE OUTPUT DATABASE Interactions Interactions are used to define contact between surfaces in an analysis Only contact interactions defined using contact pairs are written to the output database Interaction properties Interaction properties define the physical behavior of surfaces involved in an interaction Only tangential friction behavior is written to the output database Figure 10 2 shows the model data object model parts elementSets sectionCategories j nodeSets materials surfaces Container instances IH Singular object gemee t description nodeSets name t surfaces elements nodes Model Data steps Te frames ile ne fieldOutputs historyRegions ae HistoryRegion Results Data historyOutputs Figure 10 2 The model data object model 10 5 2 Results data Results data describe the results of your analysis Abaqus organizes the analysis results in an output database into the following components
315. t instancel elements 0 For a full description of the HistoryPoint command see HistoryPoint Section 33 9 1 of the Abaqus Scripting Reference Manual You then use the HistoryRegion constructor to create a HistoryRegion object stepl odb Step name step 1 description domain TIME timePeriod 1 0 hi stepl HistoryRegion name my history description my stuff point point1 For a full description of the HistoryRegion command see HistoryRegion Section 33 10 1 of the Abaqus Scripting Reference Manual You use the HistoryOutput constructor to add variables to the HistoryRegion object 9 35 WRITING TO AN OUTPUT DATABASE hil ul hl HistoryOutput name U1 description Displacement type SCALAR hil rfl h1 HistoryOutput name RF1 description Reaction Force type SCALAR Similarly for Step 2 step2 odb Step name step 2 description domain TIME timePeriod 1 0 h2 step2 HistoryRegion name my history description my stuff point point1 h2_ ul h2 HistoryOutput name U1 description Displacement type SCALAR h2 rfl h2 HistoryOutput name RF1 description Reaction Force type SCALAR Each HistoryOutput object contains a sequence of frameValue value sequences The HistoryOutput object has a method addData for adding data Each data item is a sequence of frameValue value In a time domain analysis domain TIME the sequence is stepTime value In a frequency dom
316. t step odb Step amp step odb steps Step 1 odb SequenceFrame amp allFramesInStep step frames int numFrames allFramesInStep size odb Frame amp lastFrame allFramesInStep numFrames 1 10 10 6 Reading field output data Field output data are stored in the ieldOutputs repository under the OdbFrame object The key to the repository is the name of the variable The following statements list all the variables found in the last frame of the first step the statements use the variable last Frame that we defined previously odb FieldOutputRepository amp fieldOutputRep lastFrame fieldOutputs odb FieldOutputRepositoryIT fieldIter fieldOutputRep for fieldIter first fieldIter isDone fieldIter next cout lt lt fieldIter currentKey CStr lt lt endl S U LE CSHEAR1 ASURF BSURF CSLIP1 ASURF BSURF CPRESS ASURF BSURF COPEN ASURF BSURF UR3 10 29 READING FROM AN OUTPUT DATABASE Different variables can be written to the output database at different frequencies As a result not all frames will contain all the field output variables You can use the following to view all the available field data in a frame for fieldIter first fieldIter isDone fieldIter next odb FieldOutput amp field fieldOutputRep fieldIter currentKey const odb SequenceFieldValue amp seqVal field values const odb SequenceFieldLocation amp seqLoc field locations cout lt lt
317. tStep1U1 addData 1 0 0 5 houtputStep1Rf1 addData 1 0 0 5 Create another step for history data stepName Step 2 stepDescription second analysis step odb Step amp step2 odb Step stepName stepDescription odb Enum TIME 1 0 Create new history region odb HistoryPoint hPoint2 instancel getNodeFromLabel 1 odb HistoryRegion amp hRegionStep2 step2 HistoryRegion historyRegionName historyRegionDescription hPoint2 Create new history output historyOutputName U1 historyOutputDescription Displacement odb HistoryOutput amp hOutputStep2U1 10 74 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE hRegionStep2 HistoryOutput historyOutputName historyOutputDescription odb Enum SCALAR historyOutputName RF1 historyOutputDescription Reaction Force odb HistoryOutput amp hOutputStep2Rfl hRegionStep2 HistoryOutput historyOutputName historyOutputDescription odb Enum SCALAR Add history data for the second step houtputStep2U1 addData 1 2 0 8 houtputStep2Rf1 addData 1 2 0 9 houtputStep2U1 addData 1 9 0 9 houtputStep2Rf1 addData 1 9 1 1 houtputStep2U1 addData 3 0 1 3 houtputStep2Rf1 addData 3 0 1 3 houtputStep2U1 addData 4 0 1 5 houtputStep2Rf1 addData 4 0 1 5 Square the history data U and store as new history output historyOutputName squareUl1 historyOutputDescription Square of displacements odb HistoryOutp
318. tabase from odbAccess import odb openOdb path fieldOperation odb Get fields from output database field1 odb steps LC1 frames 1 fieldoOutputs U field2 odb steps LC2 frames 1 fieldOutputs U Compute difference between fields deltaDisp field2 fieldl Save new field newStep odb Step name user description user defined results domain TIME timePeriod 0 9 57 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE newFrame newStep Frame incrementNumber 0 frameValue 0 0 newField newFrame FieldOutput name U description delta displacements type VECTOR newField addData field deltaDisp odb save 9 10 5 Computations with FieldValue objects This example illustrates how you can use the fieldValue operators to sum and average field Values in a region The example script does the following e Retrieves the stress field for a specified region during the last step and frame of the output database e Sums all the stress field Values and computes the average value e For each component of stress print the sum and the average stress Use the following command to retrieve the example script abaqus fetch job sumRegionFieldValue The fetch command also retrieves an input file that you can use to generate the output database that is read by the example script fieldValue operators example problem sum and average stress field values in a region from odbAcce
319. tabase object model 9 3 1 Model data Model data define the model used in the analysis for example the parts materials initial and boundary conditions and physical constants More information about model data can be found in The Abaqus object model Section 6 1 and Defining an assembly Section 2 10 1 of the Abaqus Analysis User s Manual Abaqus does not write all the model data to the output database for example you cannot access loads and only certain interactions are available Model data that are stored in the output database include parts the root assembly part instances regions materials sections section assignments and section categories each of which is stored as an Abaqus Scripting Interface object These components of model data are described below Parts A part in the output database is a finite element idealization of an object Parts are the building blocks of an assembly and can be either rigid or deformable Parts are reusable they can be instanced multiple times in the assembly Parts are not analyzed directly a part is like a blueprint for its instances A part is stored in an output database as a collection of nodes elements surfaces and sets 5 OBJECT MODEL FOR THE OUTPUT DATABASE The root assembly The root assembly is a collection of positioned part instances An analysis is conducted by defining boundary conditions constraints interactions and a loading history for the root assemb
320. tep sRepl sIterl currentKey cout lt lt Processing Step lt lt step name CStr lt lt end1l odb SequenceFrame amp frameSequence step frames int numFrames frameSequence size for int f 0 f lt numFrames f odb Frame amp frame frameSequence f odb FieldOutputRepository amp fieldRep frame fieldOutputs if fieldRep isMember Stress isStressPresent true odb FieldOutput field fieldRep get Stress 10 65 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE if ifElset field field getSubset myElset const odb SequenceFieldBulkData amp seqVal field bulkDataBlocks int numBlocks seqVal size for int iblock 0 iblock lt numBlocks iblock const odb FieldBulkData amp bulkData seqVal iblock numBD bulkData length numElems bulkData numberOfElements numIP numBD numElems numComp bulkData width float mises bulkData mises int elementLabels bulkData elementLabels int integrationPoints bulkData integrationPoints for int elem 0 elem lt numElems elem for int ip 0 ip lt numIP ip position elem numIP ip float misesData mises position if misesData gt maxMises maxMises misesData maxElem elementLabels elem maxStep step name maxFrame frame incrementNumber if isStressPresent cout lt lt Maximum von Mises stress lt lt region CStr lt lt is lt
321. testing ENOVIA for global collaborative lifecycle management and 3DVIA for online 3D lifelike experiences Dassault Syst mes shares are listed on Euronext Paris 13065 DSY PA and Dassault Systemes ADRs may be traded on the US Over The Counter OTC market DASTY For more information visit www 3ds com JS DASSAULT SUSTEMES subsidiaries in the US and or other countries Other company product and service names may be trademarks or service marks of their respective owners Dassault Syst mes 2011 www 3ds com Abaqus the 3DS logo SIMULIA CATIA Solidworks DELMIA ENOVIA 3DVIA and Unified FEA are trademarks or registered trademarks of Dassault Syst mes or its
322. the command For example the following describes the path to the Viewport constructor session Viewport Some constructors include more than one path For example you can create a datum that is associated with either a Part object or the RootAssembly object and each path is listed mdb models name parts name DatumAxisByCylFace mdb models name rootAssembly DatumAxisByCylFace The path is not listed if the method is not a constructor If you are using the Abaqus Scripting Interface to read data from an output database the objects exist when you open the output database and you do not have to use constructors to create them However if you are creating or writing to an output database you may need to use constructors to create new objects such as part instances and steps The documentation describes the path to the constructors that create objects in an output database For example the Path description for the FieldOutput constructor is session odbs name steps name frames i FieldOutput Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE The following statement creates a FieldOutput object myFieldOutput session odbs name steps Side load frames 1 FieldOutput name S description stress type TENSOR 3D FULL 5 2 4 Arguments The ellipsis in the command description indicates that the command takes one or more arguments For example the Viewport constructor takes arguments Viewport
323. the files that you used the last time you opened a session in that directory If you have not previously used the Abaqus PDE in the current directory a new set of recently used files is recorded as you work 7 2 3 Editing files in the Abaqus PDE You can use the Edit menu to edit scripts in the Abaqus PDE The Edit menu contains common editing tools including Undo Redo Copy Cut Paste Find and Replace It also contains the following tools for editing scripts e Indent Region gt e Unindent Region lt e Comment Region e Uncomment Region To use these tools highlight one or more lines of code in the main window and select the desired option from the Edit menu The Edit menu also contains a keyboard shortcut for each of the editing tools 7 6 Abaqus PDE BASICS 7 2 4 Selecting the settings for use with a file Use the Settings menu and tools to change some of the options in the Abaqus PDE Figure 7 3 shows the items and default selections in the Abaqus PDE Settings menu Recording Options v Allow Editing of Files vy Show File Line Numbers Ignore Breakpoints During Play v Allow Pause in Play v Set Last Main File on Startup Run Script In b v py Default to Kernel Line Animation b Python Code CAE Command Line Extra Args v 4uto Trace in CAE Figure 7 3 The Settings menu The following items are available from the Settings menu Recording Options Set the display of the triad state block
324. the output database Section 9 1 e How the object model for the output database relates to commands Section 9 2 e Object model for the output database Section 9 3 e Executing a script that accesses an output database Section 9 4 e Reading from an output database Section 9 5 e Writing to an output database Section 9 6 e Exception handling in an output database Section 9 7 e Computations with Abaqus results Section 9 8 e Improving the efficiency of your scripts Section 9 9 e Example scripts that access data from an output database Section 9 10 9 1 What do you need to access the output database To use the Abaqus Scripting Interface to access an output database you need to understand the following e How an Abaqus analysis outputs data to the output database as well as the difference between field data history data and model data The output database is described in detail in Output to the output database Section 4 1 3 of the Abaqus Analysis User s Manual and Defining an assembly Section 2 10 1 of the Abaqus Analysis User s Manual e How to program using Python An introduction to the Python programming language is provided in Chapter 4 Introduction to Python e How to use Abaqus objects Abaqus objects are explained in Chapter 5 Using Python and the Abaqus Scripting Interface 9 2 How the object model for the output database relates to
325. the same type 6 13 a Abaqus CAE SEQUENCES GeomSequence A GeomSequence is a sequence of geometry objects such as Vertices or Edges An Edge sequence is derived from the GeomSequence object Use the len function to determine the number of objects in a GeomSequence A GeomSequence has methods and members too For example the following creates a three dimensional part by extruding a 70 x 70 square through a distance of 20 The members of the resulting Part object are listed along with some information about the sequence of Edge objects mdb Model Body mySketch mdb models Body ConstrainedSketch name profile sheetSize 200 0 mySketch rectangle point1 0 0 0 0 point2 70 0 70 0 switch mdb models Body Part name Switch dimensionality THREE D type DEFORMABLE BODY switch BaseSolidExtrude sketch mySketch depth 20 0 The following statement displays the members of the resulting three dimensional part gt gt gt print mdb models Body parts Switch members _ allInternalSets allInternalSurfaces allSets allSurfaces cell cells datum datums edge edges elemEdge elemEdges elemFace elemFaces element elements engineeringFeatures face faces feature featureById features featuresById geometryPrecision geometryRefinement geometryValidity ip ips isOutOfDate modelName name node nodes referenceP
326. the same type and you can omit any type from the sequence e A Surface object specifying an entity and the side of the entity Use the following command to retrieve the script abaqus fetch job createRegions createRegions py Script to illustrate different techniques for defining regions nunun Import the modules used by this script from abaqus import from abaqusConstants import import part import assembly import step import load import interaction myModel mdb models Model 1 Create a new Viewport for this example myViewport session Viewport name Region syntax origin 20 20 width 200 height 100 Create a Sketch and draw two rectangles mySketch myModel ConstrainedSketch name Sketch A sheetSize 200 0 mySketch rectangle pointi 40 0 30 0 point2 10 0 0 0 mySketch rectangle point1 10 0 30 0 point2 40 0 0 0 6 19 SPECIFYING A REGION Create a 3D part and extrude the rectangles door myModel Part name Door dimensionality THREE D type DEFORMABLE BODY door BaseSolidExtrude sketch mySketch depth 20 0 Instance the part myAssembly myModel rootAssembly doorInstance myAssembly Instance name Door 1 part door Select two vertices pillarVertices doorInstance vertices findAt 40 30 0 40 0 0 Create a static step myModel StaticStep name impact previous Initial initialInc 1 timePeriod 1 Create a concen
327. ther member values remain unchanged this behavior is called as is behavior because the values remain as is The setValuesInStep method displays similar as is behavior Keyword and positional arguments are described in Creating functions Section 4 6 1 We recommend that you use keyword arguments since they can be supplied in any order and they make your scripts easier to read and debug for example newViewport session Viewport name myViewport origin 10 10 width 100 height 50 5 Abaqus SCRIPTING INTERFACE DOCUMENTATION STYLE If you choose not to use keywords the arguments must be provided in the order in which they are documented newViewport session Viewport myViewport 10 10 100 50 You can use a combination of keyword and positional arguments Keyword arguments can be supplied after positional arguments however positional arguments cannot be entered after keyword arguments For example you can use the following statement newViewport session Viewport myViewport 10 10 width 100 height 50 However you cannot use the following statement newViewport session Viewport name myViewport 10 10 100 50 You will find it easier to use keyword arguments so that you do not have to concern yourself with the positional requirements 5 2 5 Return value All commands return a value Many commands return the None object described in Python None Section 4 5 6 Const
328. ther reading 5 Using Python and the Abaqus Scripting Interface Executing scripts Abaqus Scripting Interface documentation style Abaqus Scripting Interface data types Object oriented programming and the Abaqus Scripting Interface Error handling in the Abaqus Scripting Interface Extending the Abaqus Scripting Interface 6 Using the Abaqus Scripting Interface with Abaqus CAE The Abaqus object model CONTENTS 2 1 2 2 3 1 3 2 3 3 4 1 4 2 4 3 4 4 4 5 4 6 4 7 5 1 5 2 5 3 5 4 5 5 5 6 6 1 CONTENTS Copying and deleting Abaqus Scripting Interface objects 6 2 Abaqus CAE sequences 6 3 Namespace 6 4 Specifying what is displayed in the viewport 6 5 Specifying a region 6 6 Prompting the user for input 6 7 Interacting with Abaqus Standard Abaqus Explicit and Abaqus CFD 6 8 Using Abaqus Scripting Interface commands in your environment file 6 9 PART Ill THE Abaqus PYTHON DEVELOPMENT ENVIRONMENT 7 Using the Abaqus Python development environment An overview of the Abaqus Python development environment 7 1 Abaqus PDE basics 7 2 Using the Abaqus PDE 7 3 PART IV PUTTING IT ALL TOGETHER EXAMPLES 8 Abaqus Scripting Interface examples Reproducing the cantilever beam tutorial 8 1 Generating a customized plot 8 2 Investigating the skew sensitivity of shell elements 8 3 Editing display preferences and GUI settings 8 4 PART V ACCESSING AN OUTPUT DATABASE 9 Using the Abaqus Scripting Interface to access an ou
329. thon source code For example gt gt gt from pychecker import checker gt gt gt import myUtilities d users smith myUtilities py 3 Imported module sys not used d users smith myUtilities py 14 Local variable a not used d users smith myUtilities py 18 No global b found For more information about pychecker see the official Python web site www python org If you import a module during an interactive session using the command line interface and then make changes to the module Python will not recognize your changes until you reload the module for example import myModule maxStress myModule calculateStress odb Edit myModule py and modify the calculateStress method 4 28 4 7 FURTHER READING reload myModule maxStress myModule calculateStress odb Further reading This chapter has introduced only the basics of the Python programming language You are encouraged to look at the standard Python documentation on the official Python web site www python org for more information In addition you may find it beneficial to work through the online tutorial on the Python web site A Python reference book will go into more details on object oriented programming techniques see Python resources Section 4 2 for a list of Python books There are many resources available from the Python community You should look at the official Python web site www python org to see the various Python packages that are av
330. tic step and name it Step 1 Enter Apply pressure for the step Description Accept the default time period of 1 0 and the default initial increment of 1 0 Oo INVESTIGATING THE SKEW SENSITIVITY OF SHELL ELEMENTS Output database requests Edit the default output database request for field output and select only U Translations and rotations and SF Section forces and moments for the whole model after every increment Delete all requests for history output Boundary condition Create a displacement boundary condition and name it Pinned The boundary condition pins the exterior edges of the plate Load Create a pressure load and name it Pressure Apply the load to the face of the plate Accept the default side of the plate and use a magnitude of 1 0 This positive pressure will result in a negative displacement in the 3 direction Set Partition the plate into quarters Create a set that contains the vertex at the center of the plate and name the set CENTER Mesh Create a 4 x 4 swept mesh of quadrilateral elements on the plate Keyword editor You must use the Keyword Editor to request output of section forces and moments for the node at the center of the plate When you edited the output database request to select the variable SF Abaqus CAE requested output of section forces and moments at element integration points To modify this output request you must add position NODES to the OUTPUT REQUESTS block as follows Element
331. times referred to as temporary and the delete semantics for these objects are the same as for standard Python objects The object exists as long as there is a reference to it If you delete the reference the object is also deleted 6 3 Abaqus CAE sequences Some methods take arguments that are described as a sequence of sequences of Floats or a sequence of sequences of Ints Data that are entered into the table editor in Abaqus CAE appear as a sequence of sequences in the equivalent Abaqus Scripting Interface command In effect the data are a two dimensional array The data across one row form one sequence and multiple rows form a sequence of those sequences For example consider the case where the user is creating an elastic material and describing a temperature dependent behavior Data Young s Poisson s Modulus Ratio 1 200e9 0 3 0 2 210e9 0 3 100 3 220e9 0 3 250 4 225e9 0 3 500 The equivalent Abaqus Scripting Interface command is mdb models Model 1 materials steel Elastic temperatureDependency True table 200 0E9 0 3 0 0 210 0E9 0 3 100 0 220 0E9 0 3 250 0 225 0E9 0 3 500 0 The table argument is described in the Abaqus Scripting Reference Manual as a sequence of sequences of Floats Lists tuples strings and arrays are described in Sequences Section 4 5 4 In addition the Abaqus Scripting Interface defines some of its own sequences that contain objects of
332. tion of the command reflects the hierarchy of objects in the object model If you are unsure of the structure of the output database you can issue the objectname members _ command from the command line interface to view the members of an object 9 3 Object model for the output database An output database generated from an Abaqus analysis contains both model and results data as shown in Figure 9 1 Model data Model data describe the parts and part instances that make up the root assembly for example nodal coordinates set definitions and element types Model data are explained in more detail in Model data Section 9 3 1 Results data Results data describe the results of your analysis for example stresses strains and displacements You use output requests to configure the contents of the results data Results data can be either field output data or history output data for a more detailed explanation see Results data Section 9 3 2 Note For a description of object models see An overview of the Abaqus object model Section 6 1 1 You can find more information on the format of the output database in Output to the output database Section 4 1 3 of the Abaqus Analysis User s Manual OBJECT MODEL FOR THE OUTPUT DATABASE odb parts Container aeee IH Singular object materials Model Data steps frames L fieldOutputs historyRegions historyOutputs Results Data Figure 9 1 The output da
333. tion when they are used as thin plates How you can use functions available in the caePrefsAccess module to edit the display preferences and GUI settings in the abaqus_v6 11 gpr file Editing display preferences and GUI settings Section 8 4 describes how to query for and set several default display and GUI behaviors in Abaqus CAE The example scripts from this manual can be copied to the user s working directory by using the Abaqus fetch utility abaqus fetch jobsscriptName where scriptName py is the name of the script see Fetching sample input files Section 3 2 13 of the Abaqus Analysis User s Manual 8 1 5 REPRODUCING THE CANTILEVER BEAM TUTORIAL 8 1 Reproducing the cantilever beam tutorial This example uses Abaqus Scripting Interface commands to reproduce the cantilever beam tutorial described in Appendix B Creating and Analyzing a Simple Model in Abaqus CAE of Getting Started with Abaqus Interactive Edition Figure 8 1 illustrates the model that you will create and analyze Figure 8 1 A loaded cantilever beam The following topics are covered e Running the example Section 8 1 1 e The cantilever beam example script Section 8 1 2 8 1 1 Running the example Use the following command to retrieve the output database that is read by the scripts abaqus fetch job beamExample To run the script do the following 1 Start Abaqus CAE from a directory in which you have write perm
334. tions interactionProperties loads Container materials IJ Singular object parts profiles rootAssembly sections sketches steps Figure 6 4 The structure of the objects under the Model object line interface When you press the Tab key the command line cycles through the parts in the model When you press Shift Tab the command line cycles backwards through the parts in the model THE Abaqus OBJECT MODEL parts sectionCategories steps E Step Container I Singular object frames T j historyRegions aia fieldOutputs E historyPoints historyOutputs Figure 6 5 The Odb object model Tab completion also searches the file system when it detects an incomplete string For example from part import THR Tab from part import THREE D openMdb hinge_t Tab openMdb hinge tutorial mdb from odbAccess import myOdb openOdb vi Tab myOdb openOdb viewer tutorial odb In most cases when you type in a constructor or a method and include the opening parenthesis tab completion prompts you to provide a value for a keyword argument For example mdb models Model 1 Part Tab mdb models Model 1 Part name When you press the Tab key the command line cycles through the arguments to the method You can use tab completion when you are accessing an output database For example p myOdb parts Tab p myOdb parts Part 1 You can also use tab completion when you are accessing an output datab
335. tions html Preface This section lists various resources that are available for help with using Abaqus Unified FEA software Support Both technical engineering support for problems with creating a model or performing an analysis and systems support for installation licensing and hardware related problems for Abaqus are offered through a network of local support offices Regional contact information is listed in the front of each Abaqus manual and is accessible from the Locations page at www simulia com Support for SIMULIA products SIMULIA provides a knowledge database of answers and solutions to questions that we have answered as well as guidelines on how to use Abaqus SIMULIA Scenario Definition Isight and other SIMULIA products You can also submit new requests for support All support incidents are tracked If you contact us by means outside the system to discuss an existing support problem and you know the incident or support request number please mention it so that we can consult the database to see what the latest action has been Many questions about Abaqus can also be answered by visiting the Products page and the Support page at www simulia com Anonymous ftp site To facilitate data transfer with SIMULIA an anonymous ftp account is available on the computer ftp simulia com Login as user anonymous and type your e mail address as your password Contact support before placing files on the site Training All
336. to be owned by the Part object The Part object in turn is owned by the Model object This ownership relationship between objects is referred to as the ownership hierarchy of the object model Ownership implies that if an object is copied everything owned by that object is also copied Similarly if an object is deleted everything owned by the object is deleted This concept is similar to parent child relationships in Abaqus CAE If you delete a Part all the children of the part such as geometry datums and regions are also deleted e The relationships between objects are described in the Path and Access descriptions in the command reference For example the following statement uses the path to a Cell object cell4 mdb models block parts crankcase cells 4 The statement mirrors the structure of the object model The Cell object is owned by a Part object the Part object is owned by a Model object and the Model object is owned by the Mdb object e The associations between the objects are captured by the object model Objects can refer to other objects for example the section objects refer to a material and the interaction objects refer to a THE Abaqus OBJECT MODEL region to steps and possibly to amplitudes An object that refers to another object usually has a data member that indicates the name of the object to which it is referring For example material is a member of the section objects and createStepName is a m
337. to transform results For rectangular cylindrical and spherical coordinate systems the second component direction for the transformed results will be determined by one of the following The Y axis in a rectangular coordinate system The 6 axis in a cylindrical coordinate system The 6 axis in a spherical coordinate system A user specified datum axis projected onto the element plane If the coordinate system used for projection and the element normal have an angle less than the specified tolerance the default is 30 Abaqus will use the next axis and generate a warning Improving the efficiency of your scripts 9 9 1 To improve the efficiency of scripts that access an output database you should create objects that will be used to hold temporary variables that are accessed multiple times while the script is executing For example if the script accesses the temporary variable while inside a loop that is executed many times creating an object to hold the variable will speed up your script significantly If you are accessing large amounts of data from an output database you should be aware of potential inefficiencies in your script and techniques that will help to speed up your scripts e Creating objects to hold temporary variables Section 9 9 1 Creating objects to hold temporary variables The following example examines the von Mises stress in each element during a particular frame of field output If t
338. tput database What do you need to access the output database 9 1 How the object model for the output database relates to commands 9 2 Object model for the output database 9 3 Executing a script that accesses an output database 9 4 Reading from an output database 9 5 Writing to an output database 9 6 Exception handling in an output database 9 7 Computations with Abaqus results 9 8 Improving the efficiency of your scripts 9 9 Example scripts that access data from an output database 9 10 CONTENTS 10 Using C to access an output database Overview 10 1 What do you need to access the output database 10 2 Abaqus Scripting Interface documentation style 10 3 How the object model for the output database relates to commands 10 4 Object model for the output database 10 5 Compiling and linking your C source code 10 6 Accessing the C interface from an existing application 10 7 The Abaqus C API architecture 10 8 Utility interface 10 9 Reading from an output database 10 10 Writing to an output database 10 11 Exception handling in an output database 10 12 Computations with Abaqus results 10 13 Improving the efficiency of your scripts 10 14 Example programs that access data from an output database 10 15 Part I An introduction to the Abaqus Scripting Interface The Abaqus Scripting Interface is an application programming interface API to the models and data used by Abaqus The Abaqus Scripting Interface is an extension of the Python obj
339. tput database as a new load combination The command line arguments provide the following odbName The output database file name stepName The name of the step containing the load cases loadCaseNames The load case names scaling The scale factors to apply to each load case Use the following command to retrieve the example script abaqus fetch job createLoadComb The fetch command also retrieves an input file that you can use to generate an output database that can be read by the example script import types from odbAccess import retrieve request from user odbName raw_input Enter odb name stepName raw_input Enter step name loadCaseNames eval raw_input Enter new load case as loadCase1lName loadCaseNName if type loadCaseNames types TupleType loadCaseNames list loadCaseNames lcName raw_input Enter new load case name scaling eval raw_input Enter new load case as scaleFactorl scaleFactorN odb openOdb odbName step odb steps stepName compute new load case newStress 0 newDisp 0 9 61 EXAMPLE SCRIPTS THAT ACCESS DATA FROM AN OUTPUT DATABASE for loadCaseName in loadCaseNames frame step getFrame loadCase step loadCases loadCaseName scaleFac scaling loadCaseNames index frame loadCase name newStress newStress scaleFac frame fieldOutputs S newDisp newDisp scaleFac frame fieldOutputs U save new load
340. trated force on the selected vertices myPillarLoad myModel ConcentratedForce name pillarForce createStepName impact region pillarVertices cf1 12 50E4 Select two faces topFace doorInstance faces findAt 25 30 10 bottomFace doorInstance faces findAt 25 0 10 Create a pressure load on the selected faces You can use the notation if the entities are of the same type and are from the same part instance myFenderLoad myModel Pressure 6 20 SPECIFYING A REGION name pillarPressure createStepName impact region topFace bottomFace SIDE1 magnitude 10E4 Select two edges from one instance myEdgel doorInstance edges findAt 10 15 20 myEdge2 doorInstance edges findAt 10 15 0 Create a boundary condition on one face two edges and two vertices myDisplacementBc myModel DisplacementBC name xBC createStepName impact region pillarVertices myEdgel myEdge2 topFace ul 5 0 Select two faces using an arbitrary point on the face faceRegion doorInstance faces findAt 30 15 20 ky 30 15 20 Create a surface containing the two faces Indicate which side of the surface to include mySurface myModel rootAssembly Surface name exterior sidelFaces faceRegion Create an elastic foundation using the surface myFoundation myModel ElasticFoundation name elasticFloor createStepName Initial surface m
341. u may need to use constructors to create new objects such as part instances and steps The documentation describes the path to the constructors that create objects in an output database For example the Path description for the FieldOutput constructor is odb steps name frames i FieldOutput The following statement creates a FieldOutput object odb StepContainer stepCon odb steps odb Step step stepCon Side load odb SequenceFrame frameSeq step frames odb Frame frame frameSeq Get frameSeq Size 1 odb FieldOutput amp myFieldOutput frame FieldOutput S stress odb Enum TENSOR 3D FULL 10 3 4 Prototype Chapter 60 Odb commands of the Abaqus Scripting Reference Manual contains a prototype section for each C command The prototype provides the type returned by the command the name of the command and a list of all its arguments along with the type of each argument Required arguments appear first in the list followed by default arguments along with their default value For example the Frame constructor is given as odb Frame Frame int incrementNumber float frameValue 10 4 HOW THE OBJECT MODEL FOR THE OUTPUT DATABASE RELATES TO COMMANDS const odb String amp description indicating that the incrementNumber and frameValue arguments are required that the optional description argument has a default value of the empty string and that the method returns a reference to the Frame ob
342. u use the Abaqus Scripting Interface and the C application programming interface API to access an Abaqus output database The manual consists of the following sections An introduction to the Abaqus Scripting Interface This section provides an overview of the Abaqus Scripting Interface and describes how Abaqus CAE executes scripts Simple examples Two simple examples are provided to introduce you to programming with the Abaqus Scripting Interface e Creating a part e Reading from an output database An introduction to Python This section is intended as a basic introduction to the Python programming language and is not an exhaustive description of the language There are several books on the market that describe Python and these books are listed as references Additional resources such as Python related sites are also listed Using Python and the Abaqus Scripting Interface This section describes the Abaqus Scripting Interface in more detail The documentation style used in the command reference is explained and important Abaqus Scripting Interface concepts such as data types and error handling are introduced Using the Abaqus Scripting Interface with Abaqus CAE This section describes how you use the Abaqus Scripting Interface to control Abaqus CAE models and analysis jobs The Abaqus object model is introduced along with techniques for specifying a region and reading messages from an analysis product Abaqus Standard Abaqu
343. ues print Position v position Type v type print Node label v nodeLabel print X displacement v data 0 print Y displacement v data 1 print Displacement magnitude v magnitude 9 25 WRITING TO AN OUTPUT DATABASE 9 6 odb close The resulting output is Position NODAL Type VECTOR Node label 1000 X displacement 8 29017850095e 34 Y displacement 76 4554519653 Displacement magnitude 76 4554519653 Writing to an output database You can write your own data to an output database and you can use Abaqus CAE to view the data Writing to an output database is very similar to reading from an output database When you open an existing database the Odb object contains all the objects found in the output database such as instances steps and field output data In contrast when you are writing to a new output database these objects do not exist As a result you must use a constructor to create the objects For example you use the Part constructor to create a Part object the Instance constructor to create an OdbInstance object and the Step constructor to create an OdbStep object After you create an object you use methods of the objects to enter or modify the data associated with the object For example if you are creating an output database you first create an Odb object You then use the Part constructor to create a part After creating the part you use the addNodes and addElements
344. ugger by selecting Show Watch from the action buttons below the call stack area or by selecting Window Debug Windows Watch List Abaqus displays the Watch List area below the debugger or below the main window if the debugger is not open You can also customize the following aspects of variable display in the Watch List e You can switch a variable s display format between repr and str formats The repr function returns a string that is better suited to being read by the Python interpreter while the str function returns a string better suited to printing For more information about the built in Python functions repr and str refer to the official Python web site www python org To toggle between these settings click mouse button 3 on a watch variable row and select Display repr not str value of variable name or Display str not repr value of variable name from the list that appears If the variable is a local variable and the program is not accessing that section of code the variable value will be set to not evaluated Variable values are also set to not evaluated if the program is not running e You can prompt the Abaqus PDE to pause when the program reaches a line in which the value of a selected watch variable has changed To toggle on the stop on change option for a particular watch variable click mouse button 3 on the variable s line and select Stop on change to variable name from the list that appears
345. uirements 1 odb Name of the output database 2 elset Name of the assembly level element set Search will be done only for element belonging to this set If this parameter is not provided search will be performed over the entire model 3 help Print usage KKK KKK He e He de He de IRR KKK RRR KKK KR He He de He de He de He e He e He e He ERE ke ke e He e He ke ke ke keke e ke kke k ke if defined HP amp amp defined HKS_HPUXI include lt iostream h gt else include lt iostream gt using namespace std endif include lt odb_API h gt include lt sys stat h gt kkkkkkkkkkkkkkk utility functions kkkkkkkkkkkkkkk bool fileExists const odb String amp string void rightTrim odb String amp string const char char set void printExecutionSummary BR RRR RRR RRR RRR RRR e He e He RRR KERR KKK KERR He e He e KEKE ke ke e ke ke ke ke keke keke kek kek kek ke int ABQmain int argc char argv odb String odbPath bool ifOdbName false odb String elsetName bool ifElset false odb Set myElset 10 63 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE odb String region over the entire model char msg 256 char abaCmd argv 0 for int arg if strncmp argv arg o 2 0 0 arg lt argc arg arg odbPath argv arg rightTrim odbPath odb if fileExists odbPath cerr lt lt ERROR output database
346. ut amp hOutputSteplsumU1 hRegionStep1 HistoryOutput historyOutputName historyOutputDescription odb Enum SCALAR historyOutputName squareU2 odb HistoryOutput amp hOutputStep2sumU1 hRegionStep2 HistoryOutput historyOutputName historyOutputDescription odb Enum SCALAR Get XY Data from the two steps odb HistoryOutputRepository amp historyOutputs1 hRegionStep1l historyOutputs historyOutputName U1 odb HistoryOutput amp ulFromStepl historyOutputs1 historyOutputName odb HistoryOutputRepository amp historyOutputs2 hRegionStep2 historyOutputs odb HistoryOutput amp ulFromStep2 historyOutputs2 historyOutputName 10 75 EXAMPLE PROGRAMS THAT ACCESS DATA FROM AN OUTPUT DATABASE 10 15 3 odb SequenceSequenceFloat hdatal ulFromStepl data odb SequenceSequenceFloat hdata2 ulFromStep2 data Add the squared displacement to the two steps for n 0 n lt hdatal size n odb SequenceFloat hdatall hdatal get n houtputSteplsumU1 addData hdatall get 0 pow double hdatall get 1 int 2 for n 0 n lt hdata2 size n odb SequenceFloat hdata22 hdata2 get n houtputStep2sumU1 addData hdata22 get 0 pow double hdata22 get 1 int 2 Save the results in the output database Use the Visualization module of Abaqus CAE to view the contents of the output database odb save odb close return 0 Reading data from an
347. utput database Figure 2 1 Abaqus Scripting Interface commands and Abaqus CAE Abaqus Scripting Interface commands can be issued to the Abaqus CAE kernel from one of the following e The graphical user interface GUI For example when you click OK or Apply in a dialog box the GUI generates a command based on your options and settings in the dialog box You can use the Macro Manager to record a sequence of the generated Abaqus Scripting Interface commands HOW DOES THE Abaqus SCRIPTING INTERFACE INTERACT WITH Abaqus CAE in a macro file For more information see Creating and running a macro Section 9 5 5 of the Abaqus CAE User s Manual Click Lin the lower left corner of the main window to display the command line interface CLI You can type a single command or paste in a sequence of commands from another window the command is executed when you press Enter You can type any Python command into the command line for example you can use the command line as a simple calculator Note When you are using Abaqus CAE errors and messages are posted into the message area Click bl in the lower left corner of the main window to display the message area If you have more than a few commands to execute or if you are repeatedly executing the same commands it may be more convenient to store the set of statements in a file called a script A script contains a sequence of Python statements stored in plain ASCII format For example you
348. utput database maintain this association Sections are assigned to each part in a model and the section assignments are propagated to each instance of that part Section categories You use section categories to group the regions of the model that use the same section definitions for example the regions that use a shell section with five section points Within a section category you use the section points to identify the location of results for example you can associate section point 1 with the top surface of a shell and section point 5 with the bottom surface Analytical rigid surface Analytical rigid surfaces are geometric surfaces with profiles that can be described with straight and curved line segments Using analytical rigid surfaces offers important advantages in contact modeling OBJECT MODEL FOR THE OUTPUT DATABASE Rigid bodies You use rigid bodies to define a collection of nodes elements and or surfaces whose motion is governed by the motion of a single node called the rigid body reference node Pretension Sections Pretension sections are used to associate a pre tension node with a pre tension section The pre tension section can be defined using a surface for continuum elements or using an element for truss or beam elements Interactions Interactions are used to define contact between surfaces in an analysis Only contact interactions defined using contact pairs are written to the output database Interaction pro
349. wport that was recorded by Abaqus CAE while the user created a viewport Macros are stored in the file abaqusMacros py in your local or home directory from abaqus import def createViewport session Viewport name Viewport 2 origin 15 0 15 0 width 145 0 height 90 0 session viewports Viewport 2 makeCurrent The following shows how you can modify the macro to accept input from the user Default values for the viewport width and height have been added to the input request from abaqus import def createViewport name getInput Enter viewport name prompt Enter viewport width height mm w h eval getInput prompt 100 50 vp session Viewport name name width w height h vp restore vp makeCurrent The eval function in the third line of the macro converts the string returned by the getInput function into two integers When you supply the default values shown in this example to the get Input function the prompt and the text field in the dialog box that appears are shown in the following figure If the user clicks OK or presses Enter the default values are accepted and returned to the get Input function If the user clicks Cancel None is returned i l Get Input x Enter viewport width height mm fi 00 50 Cancel 6 23 Oo PROMPTING THE USER FOR INPUT 6 7 2 Requesting multiple inputs from the user The getInputs function displays a dialog box in the center of the main window
350. y e The component of the variable option 1 only e The section point number option 1 only e The element number or element set name Before program execution compile and link the C program using the abaqus make utility abaqus make job felbow C After successful compilation the program s object code is linked automatically with the Abaqus object codes stored in the shared program library and interface library to build the executable program Refer to Chapter 4 Customizing the Abaqus environment of the Abaqus Installation and Licensing Guide to see which compile and link commands are used for a particular computer Before executing the program run an analysis that creates an output database file containing the appropriate output This analysis includes for example output for the elements and the integration point coordinates of the elements Execute the program using the following command abaqus felbow lt filename odb gt The program prompts for other information such as the desired postprocessing option part name etc The program processes the data and produces a text file or a new output database file that contains the information required to visualize the elbow element results Elastic plastic collapse of a thin walled elbow under in plane bending and internal pressure Section 1 1 2 of the Abaqus Example Problems Manual contains several figures that can be created with the aid of this program 10 82 About
351. y you can associate the callback function with all jobs and all messages The commands are described in Chapter 31 Messaging commands of the Abaqus Scripting Reference Manual The interface definition of the callback function is def functionName jobName messageType data userData The arguments to the callback function are e jobName A String specifying the name of the job to be monitored You can also use the SymbolicConstant ANY_JOB that specifies that the callback function will monitor messages from all jobs e messageType A SymbolicConstant specifying the message type that will call the callback function You can also use the SymbolicConstant ANY MESSAGE TYPE that specifies that all messages will call the callback function The following is a list of the message types issued by Abaqus Standard Abaqus Explicit and Abaqus CFD ABORTED ANY JOB ANY MESSAGE TYPE COMPLETED END STEP ERROR HEADING HEALER JOB 6 26 INTERACTING WITH Abaqus Standard Abaqus Explicit AND Abaqus CFD HEALER TYPE INTERRUPTED ITERATION JOB ABORTED JOB_ COMPLETED JOB INTERRUPTED JOB SUBMITTED MONITOR DATA ODB_ FILE ODB_ FRAME SIMULATION ABORTED SIMULATION COMPLETED SIMULATION_INTERRUPTED SIMULATION SUBMITTED STARTED STATUS STEP WARNING e data A DataObject object containing the message data The following list describes the members of the DataObject object clientHost A String
352. ySurface stiffness 1500 Display the assembly along with the new boundary conditions and loads myViewport setValues displayedObject myAssemb1ly myViewport assemblyDisplay setValues step impact loads ON bcs ON fields ON 6 21 PROMPTING THE USER FOR INPUT 6 7 6 7 Prompting the user for input You may want to request input from a user while an Abaqus Scripting Interface script is executing There are many reasons for requesting input for example to specify design parameters to enable a macro to take action based on the input received or to force parts of the script to be repeated The Abaqus Scripting Interface provides three functions that request input from the user and return the data entered by the user e The getInput function requests a single input from the user from a text field in a dialog box For more information see Requesting a single input from the user Section 6 7 1 e The getInputs function requests multiple inputs from the user from text fields in a dialog box For more information see Requesting multiple inputs from the user Section 6 7 2 e The getWarningRepl1ly function requests a reply to a warning message from the user from a warning dialog box For more information see Requesting a warning reply from the user Section 6 7 3 Note You cannot use a script that contains get Input getInputs or getWarningReply if you are running the script from the command line and pas
353. your scripts easier to read and understand myModel refers to a model object in the previous example A Python script can include a loop The start and end of a loop is controlled by indentation in the script Python includes a set of built in functions For example the len function returns the length of a sequence You can use commands to replicate any operation that can be performed interactively when you are working with Abaqus CAE for example creating a viewport displaying a contour plot and setting the step and the frame to display 3 11 Part Il Using the Abaqus Scripting Interface This section provides an introduction to the Python programming language and a discussion of how you can combine Python statements and the Abaqus Scripting Interface to create your own scripts The following topics are covered e Chapter 4 Introduction to Python e Chapter 5 Using Python and the Abaqus Scripting Interface e Chapter 6 Using the Abaqus Scripting Interface with Abaqus CAE 4 PYTHON AND Abaqus Introduction to Python This section provides a basic introduction to the Python programming language You are encouraged to try the examples and to experiment with Python statements The Python language is used throughout Abaqus not only in the Abaqus Scripting Interface Python is also used by Abaqus Design to perform parametric studies and in the Abaqus Standard Abaqus Explicit Abaqus CFD and Abaqus CAE environ
354. zeMdb Verifying a model database The veri fyMdb method is used to verify the partial contents of a model database when it is opened You must write the verifyMdb method and install it using the setVerifyMdb method You can call the set VerifyMdb method only once per application name which prevents unauthorized changes to the method However the set VerifyMdb method may be called multiple times using different application names to allow more than one application to register with the same model database When Abaqus opens a model database its first action is to load only the mdb customData appData object and pass that object to each verifyMdb method registered in the session If the model database has no appData then Abaqus passes None to each veri fyMdb method Inside your verifyMdb method you can query the appData object to determine if you need to take any action such as upgrading your data Initializing a model database If a script creates a new model database you can initialize the model database with your custom objects using the initializeMdb method Abaqus calls each initializeMdb method registered with the session whenever a new model database is created You must write the initializeMdb method and install it using the setInitializeMdb method You can call the setInitializeMdb method only once per application name which prevents unauthorized changes to the method However the setInitializeMdb method may be called multiple times usi
Download Pdf Manuals
Related Search
Related Contents
Extron MTP 15HD RS Series User Guide MANUAL DO UTILIZADOR - Icon Heath & Fitness Télécharger ce fichier Smart Sensor Pro+ User Guide Function Specification for AWC Braun Multiquick 5 K700 SM840E user manual Spectracide HG-95830-2 Instructions / Assembly Copyright © All rights reserved.
Failed to retrieve file