ABAQUS-Python Tutorial: How to perform an iteration in ABAQUS CAE using different imperfections ?
14.1 هزار بار بازدید -
4 سال پیش
-
ABAQUS-Python Tutorial: How to perform
ABAQUS-Python Tutorial: How to perform a simple iteration in ABAQUS CAE using different eigenmode and dimple imperfections ?
In this video,
ABAQUS-Python Tutorial: How to perfor...
I will present the steps to create a simple iteration in ABAQUS CAE using different imperfections for a cylinder buckling problem.
Timecodes:
Intro: 0:00
Shell model creation in ABAQUS CAE: 0:51
Edit keyword for imperfection mode extraction: 6:20
Create Python Script for eigenmode imperfection: 7:00
Linear results for eigenmode imperfection: 20:40
Non-Linear results for eigenmode imperfection: 23:25
Result extraction from ODB for eigenmode imperfection: 23:55
Comparison 1 with minimum test result: 26:16
Create Python Script for dimple imperfection: 26:30
Non-Linear results for dimple imperfection: 31:20
Comparison 2 with minimum test result: 33:16
#abaqus #abaqustutorial #hnrwagner
Researchgate Profile
https://www.researchgate.net/profile/...
Mendeley Profile
https://www.mendeley.com/profiles/ron...
Google Scholor Profile
https://scholar.google.de/citations?u...
Scopus Profile
https://www.scopus.com/authid/detail....
ORCID iD
https://orcid.org/0000-0003-2749-1455
###########################################
Base Script
###########################################
from abaqus import *
from abaqusConstants import *
import numpy as np
somefloats_f = []
somefloats_f2 = []
somefloats_f3 = []
somefloats_u = []
pert_L_v = []
myCpu = 8
pert = 0.3
for i in range(1,11,1):
myString = 'GNIA-Dimple-'+str(i)
myModel = mdb.Model(name=myString, objectToCopy=mdb.models['GNIA'])
myJob = mdb.Job(name=myString, model=myString, description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=myCpu, numDomains=myCpu, numGPUs=0)
myJob.submit()
myJob.waitForCompletion()
open ODB file and extract values for reaction forces
odb = session.openOdb(str(myString)+'.odb')
Step-1
lastStep=odb.steps['Step-1']
define some variables
myPerturbation = [pert*i] # scaling factor
pert_L_v = pert_L_v + myPerturbation
time_v = []
Force_v = []
AxialDisp_v = []
for x in range(len(lastStep.frames)):
lastFrame = lastStep.frames[x]
Time1=lastFrame.frameValue
rForce = lastFrame.fieldOutputs['RF']
center = odb.rootAssembly.nodeSets['RP-1']
centerRForce = rForce.getSubset(region=center)
time_vr = [Time1]
time_v = time_v + time_vr
rDisp = lastFrame.fieldOutputs['U']
center = odb.rootAssembly.nodeSets['RP-1']
centerRDisp = rDisp.getSubset(region=center)
for i in centerRDisp.values:
AxialDisp_vr = [i.data[2]] # 0 is Ux, 1 is Uy and 2 is Uz
AxialDisp_v = AxialDisp_v + AxialDisp_vr
for i in centerRForce.values:
Force_vr = [i.data[2]] # 0 is RF1, 1 is RF2 and 2 is RF3
Force_v = Force_v + Force_vr
Force = np.max(Force_v) # maximum reaction force
somefloats_fr = [Force]
somefloats_f = somefloats_f + somefloats_fr
Index = np.argmax(Force_v) # index or number of the reaction force value
Disp = AxialDisp_v[Index] # axial displacement as function of max(reaction force)
somefloats_fr3 = [Disp]
write input to text files
somefloats_f3 = somefloats_f3 + somefloats_fr3
np.savetxt('Nx_'+str(myString)+'.txt',somefloats_f)
np.savetxt('u_'+str(myString)+'.txt',somefloats_f3)
np.savetxt('pert_'+str(myString)+'.txt',pert_L_v)
np.savetxt('Rz_'+str(myString)+'.txt',Force_v)
np.savetxt('ux_'+str(myString)+'.txt',AxialDisp_v)
In this video,
ABAQUS-Python Tutorial: How to perfor...
I will present the steps to create a simple iteration in ABAQUS CAE using different imperfections for a cylinder buckling problem.
Timecodes:
Intro: 0:00
Shell model creation in ABAQUS CAE: 0:51
Edit keyword for imperfection mode extraction: 6:20
Create Python Script for eigenmode imperfection: 7:00
Linear results for eigenmode imperfection: 20:40
Non-Linear results for eigenmode imperfection: 23:25
Result extraction from ODB for eigenmode imperfection: 23:55
Comparison 1 with minimum test result: 26:16
Create Python Script for dimple imperfection: 26:30
Non-Linear results for dimple imperfection: 31:20
Comparison 2 with minimum test result: 33:16
#abaqus #abaqustutorial #hnrwagner
Researchgate Profile
https://www.researchgate.net/profile/...
Mendeley Profile
https://www.mendeley.com/profiles/ron...
Google Scholor Profile
https://scholar.google.de/citations?u...
Scopus Profile
https://www.scopus.com/authid/detail....
ORCID iD
https://orcid.org/0000-0003-2749-1455
###########################################
Base Script
###########################################
from abaqus import *
from abaqusConstants import *
import numpy as np
somefloats_f = []
somefloats_f2 = []
somefloats_f3 = []
somefloats_u = []
pert_L_v = []
myCpu = 8
pert = 0.3
for i in range(1,11,1):
myString = 'GNIA-Dimple-'+str(i)
myModel = mdb.Model(name=myString, objectToCopy=mdb.models['GNIA'])
myJob = mdb.Job(name=myString, model=myString, description='', type=ANALYSIS, atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=myCpu, numDomains=myCpu, numGPUs=0)
myJob.submit()
myJob.waitForCompletion()
open ODB file and extract values for reaction forces
odb = session.openOdb(str(myString)+'.odb')
Step-1
lastStep=odb.steps['Step-1']
define some variables
myPerturbation = [pert*i] # scaling factor
pert_L_v = pert_L_v + myPerturbation
time_v = []
Force_v = []
AxialDisp_v = []
for x in range(len(lastStep.frames)):
lastFrame = lastStep.frames[x]
Time1=lastFrame.frameValue
rForce = lastFrame.fieldOutputs['RF']
center = odb.rootAssembly.nodeSets['RP-1']
centerRForce = rForce.getSubset(region=center)
time_vr = [Time1]
time_v = time_v + time_vr
rDisp = lastFrame.fieldOutputs['U']
center = odb.rootAssembly.nodeSets['RP-1']
centerRDisp = rDisp.getSubset(region=center)
for i in centerRDisp.values:
AxialDisp_vr = [i.data[2]] # 0 is Ux, 1 is Uy and 2 is Uz
AxialDisp_v = AxialDisp_v + AxialDisp_vr
for i in centerRForce.values:
Force_vr = [i.data[2]] # 0 is RF1, 1 is RF2 and 2 is RF3
Force_v = Force_v + Force_vr
Force = np.max(Force_v) # maximum reaction force
somefloats_fr = [Force]
somefloats_f = somefloats_f + somefloats_fr
Index = np.argmax(Force_v) # index or number of the reaction force value
Disp = AxialDisp_v[Index] # axial displacement as function of max(reaction force)
somefloats_fr3 = [Disp]
write input to text files
somefloats_f3 = somefloats_f3 + somefloats_fr3
np.savetxt('Nx_'+str(myString)+'.txt',somefloats_f)
np.savetxt('u_'+str(myString)+'.txt',somefloats_f3)
np.savetxt('pert_'+str(myString)+'.txt',pert_L_v)
np.savetxt('Rz_'+str(myString)+'.txt',Force_v)
np.savetxt('ux_'+str(myString)+'.txt',AxialDisp_v)
4 سال پیش
در تاریخ 1399/07/30 منتشر شده
است.
14,129
بـار بازدید شده