import os import shutil from abaqus import session from abaqus import * from abaqusConstants import * from caeModules import * from driverUtils import executeOnCaeStartup from math import * from symbolicConstants import SymbolicConstant from odbAccess import * from odbMaterial import * from odbSection import * """ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Information """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ # Skript zur Ausgabe von # -Triaxialitaet # -Lodewinkel # -PEQRV # in odb-Datei # ! wichtig ! odb-Datei muss beschreibbar sein # => Beim Oeffnen der Datei "Read Only"-Feld ausschalten # Ergebnisse koennen erst beim nochmaligen Oeffnen der Datei angezeigt werden """ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" General """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ #### Editiert Holger #### #os.chdir('d:/Temp/') ######################### os.chdir('d:/Temp/') ############################ StartModell = 89 EndModell = 89 ############################ ################################################################################ indexZahl = StartModell EndModell = EndModell + 1 WorkPfad = 'D:/Bjoern/SSCT+LS/' WorkPfadG = 'G:/Laengssteife/Modelle/Modell' + str.zfill(str(indexZahl), 3) + '/' for everySubmodel in range(StartModell,EndModell): model_pathG = WorkPfadG + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb' model_path = WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb' if os.path.isfile(model_pathG): #shutil.copyfile(WorkPfadG + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb', WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb') #session.upgradeOdb(WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb', WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'-neu.odb') #os.rename(WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb', WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'-old.odb') #os.rename(WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'-neu.odb', WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+ '.odb') #session.odbs[WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+ '.odb'].close() o1 = session.openOdb(name=model_path, readOnly=False) session.viewports['Viewport: 1'].setValues(displayedObject=o1) """ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Schaedigungskurven S355 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ ra1 = 0.712 rb1 = 1.150 re1 = -0.165 ra2 = 0.712 rb2 = 1.186 re2 = -0.084 ra3 = 0.712 rb3 = 1.222 re3 = -0.003 ra4 = 0.712 rb4 = 1.258 re4 = 0.077 ra5 = 0.712 rb5 = 1.294 re5 = 0.158 ra6 = 0.712 rb6 = 1.330 re6 = 0.238 """ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Input """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ #### Editiert Holger #### #model_path = 'D:/Bjoern/SSCT+LS/Submodel007.odb' ######################### """ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Berechnung """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ odb = session.odbs[model_path] for step in odb.steps.values(): print 'Processing Step:', step.name frameRepository = step.frames counter = 0 for frame in frameRepository: ## Ueberpruefen Mises-Vergleichsspannung = Null print 'Processing Frame:', counter allFields = frame.fieldOutputs Stress = 'S' stressSet = allFields[Stress] stressSetValues = stressSet.values zero_stress = FALSE for stressValue in stressSetValues: if (stressValue.mises == 0): zero_stress = TRUE ## Berechnung der Parameter if (zero_stress == FALSE): triax = allFields[Stress].getScalarField(invariant=PRESS)/allFields[Stress].getScalarField(invariant=MISES) triaxx = triax * -1 xi = power(allFields[Stress].getScalarField(invariant=INV3)/allFields[Stress].getScalarField(invariant=MISES),3) # #if xi < -1: # xi = -1 #elif xi > 1: # xi = 1 # lode = 1-2/pi*acos(xi) eps_f1 = ra1*exp(-rb1*triaxx)+re1 criteria11 = allFields['PEEQ']/eps_f1 eps_f2 = ra2*exp(-rb2*triaxx)+re2 criteria22 = allFields['PEEQ']/eps_f2 eps_f3 = ra3*exp(-rb3*triaxx)+re3 criteria33 = allFields['PEEQ']/eps_f3 eps_f4 = ra4*exp(-rb4*triaxx)+re4 criteria44 = allFields['PEEQ']/eps_f4 eps_f5 = ra5*exp(-rb5*triaxx)+re5 criteria55 = allFields['PEEQ']/eps_f5 eps_f6 = ra6*exp(-rb6*triaxx)+re6 criteria66 = allFields['PEEQ']/eps_f6 else: triaxx = allFields[Stress].getScalarField(invariant=PRESS)*0 lode = allFields[Stress].getScalarField(invariant=PRESS)*0 criteria11 = allFields[Stress].getScalarField(invariant=PRESS)*0 criteria22 = allFields[Stress].getScalarField(invariant=PRESS)*0 criteria33 = allFields[Stress].getScalarField(invariant=PRESS)*0 criteria44 = allFields[Stress].getScalarField(invariant=PRESS)*0 criteria55 = allFields[Stress].getScalarField(invariant=PRESS)*0 criteria66 = allFields[Stress].getScalarField(invariant=PRESS)*0 ## Ausgabe der Parameter my_field = frame.FieldOutput(name='TRIAXX', description='Triaxialitaet', type=SCALAR) my_field.addData(field=triaxx) my_field2 = frame.FieldOutput(name='LODEE', description='Lodewinkel', type=SCALAR) my_field2.addData(field=lode) my_field3 = frame.FieldOutput(name='criteria11', description='Rissinitiierungskriterium', type=SCALAR) my_field3.addData(field=criteria11) my_field4 = frame.FieldOutput(name='criteria22', description='Rissinitiierungskriterium', type=SCALAR) my_field4.addData(field=criteria22) my_field5 = frame.FieldOutput(name='criteria33', description='Rissinitiierungskriterium', type=SCALAR) my_field5.addData(field=criteria33) my_field6 = frame.FieldOutput(name='criteria44', description='Rissinitiierungskriterium', type=SCALAR) my_field6.addData(field=criteria44) my_field7 = frame.FieldOutput(name='criteria55', description='Rissinitiierungskriterium', type=SCALAR) my_field7.addData(field=criteria55) my_field8 = frame.FieldOutput(name='criteria66', description='Rissinitiierungskriterium', type=SCALAR) my_field8.addData(field=criteria66) counter = counter + 1 #odb.save() odb.save() session.odbs[model_path].close() #os.remove(WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'-old.odb') #os.rename(WorkPfadG + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb', WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'-old.odb') #shutil.copyfile(WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb', WorkPfadG + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb') #os.remove(WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb') indexZahl = indexZahl + 1 model_pathG = WorkPfadG + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb' model_path = WorkPfad + 'Submodel'+str.zfill(str(indexZahl), 3)+'.odb' WorkPfadG = 'G:/Laengssteife/Modelle/Modell' + str.zfill(str(indexZahl), 3) + '/'