Cansand
Structural
- Jan 14, 2007
- 102
I am trying to work with the existing example in scripts user Manual under section
8.10.1 Finding the maximum value of von Mises stress
in the user interface script manual on how to run a script and find Max Mises
They wrote the script
abaqus fetch job=odbMaxMises.py
which suppose to operate on the example:
abaqus fetch job=viewer_tutorial
I have fetched both and then open the viewer_tutorial.Odb file
before I went to run script I went through the script and changed "Odb.name" with "viewer_tutorial"
then I saved the script and went to Run script trying to run it but it said invalid syntex. I am usin the same script in the manual then why Iam getting this
--------------------------------------------
"""
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
"""
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
from odbAccess import *
from sys import argv,exit
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def rightTrim(input,suffix):
if (input.find(suffix) == -1):
input = input + suffix
return input
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def getMaxMises(viewer_tutorial,elsetName):
""" Print max mises location and value given odbName
and elset(optional)
"""
elset = elemset = None
region = "over the entire model"
""" Open the output database """
odb = openOdb(viewer_tutorial)
assembly = odb.rootAssembly
""" Check to see if the element set exists
in the assembly
"""
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, viewer_tutorial)
odb.close()
exit(0)
""" Initialize maximum values """
maxMises = -0.1
maxElem = 0
maxStep = "_None_"
maxFrame = -1
Stress = 'S'
isStressPresent = 0
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 > maxMises):
maxMises = stressValue.mises
maxElem = stressValue.elementLabel
maxStep = step.name
maxFrame = frame.frameId
if(isStressPresent):
print 'Maximum 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()
#==================================================================
# S T A R T
#
if __name__ == '__main__':
odbName = viewer_tutorial
elsetName = None
argList = argv
argc = len(argList)
i=0
while (i < argc):
if (argList[:2] == "-o"):
i += 1
name = argList
odbName = rightTrim(name,".odb")
elif (argList[:2] == "-e"):
i += 1
elsetName = argList
elif (argList[:2] == "-h"):
print __doc__
exit(0)
i += 1
if not (odbName):
print ' **ERROR** output database name is not provided'
print __doc__
exit(1)
getMaxMises(viewer_tutorial,elsetName)
8.10.1 Finding the maximum value of von Mises stress
in the user interface script manual on how to run a script and find Max Mises
They wrote the script
abaqus fetch job=odbMaxMises.py
which suppose to operate on the example:
abaqus fetch job=viewer_tutorial
I have fetched both and then open the viewer_tutorial.Odb file
before I went to run script I went through the script and changed "Odb.name" with "viewer_tutorial"
then I saved the script and went to Run script trying to run it but it said invalid syntex. I am usin the same script in the manual then why Iam getting this
--------------------------------------------
"""
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
"""
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
from odbAccess import *
from sys import argv,exit
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def rightTrim(input,suffix):
if (input.find(suffix) == -1):
input = input + suffix
return input
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def getMaxMises(viewer_tutorial,elsetName):
""" Print max mises location and value given odbName
and elset(optional)
"""
elset = elemset = None
region = "over the entire model"
""" Open the output database """
odb = openOdb(viewer_tutorial)
assembly = odb.rootAssembly
""" Check to see if the element set exists
in the assembly
"""
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, viewer_tutorial)
odb.close()
exit(0)
""" Initialize maximum values """
maxMises = -0.1
maxElem = 0
maxStep = "_None_"
maxFrame = -1
Stress = 'S'
isStressPresent = 0
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 > maxMises):
maxMises = stressValue.mises
maxElem = stressValue.elementLabel
maxStep = step.name
maxFrame = frame.frameId
if(isStressPresent):
print 'Maximum 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()
#==================================================================
# S T A R T
#
if __name__ == '__main__':
odbName = viewer_tutorial
elsetName = None
argList = argv
argc = len(argList)
i=0
while (i < argc):
if (argList[:2] == "-o"):
i += 1
name = argList
odbName = rightTrim(name,".odb")
elif (argList[:2] == "-e"):
i += 1
elsetName = argList
elif (argList[:2] == "-h"):
print __doc__
exit(0)
i += 1
if not (odbName):
print ' **ERROR** output database name is not provided'
print __doc__
exit(1)
getMaxMises(viewer_tutorial,elsetName)