2017-04-10 2 views
1

다음과 같이 어려움을 겪고 있습니다. 주어진 엘에 대해 새 FieldOutput (텐서로 간단한 aritmetic 작업을 말하며)을 만들고 싶습니다. 세트. 이 모델이 너무 비싸고 어쨌든 그 특정 지역/세트에 관심이 있기 때문에 전체 모델이 아닙니다. 나는 결과와의 ODB를 열Abaqus : 새 FieldOutput 만들기 (형식?)

....

from abaqus import * 
from odbAccess import * 
from abaqusConstants import * 
import visualization 
import fileinput 
import os 

# to make prettyPrint work! 
from odbAccess import * 
from textRepr import * 

# open odb 
odb_path="analysis45.odb" 
my_odb=session.openOdb(name=odb_path,readOnly=FALSE) 

항상 상관없이 자신의 이름이 무엇인지 단계/인스턴스를 엽니 없다는 것을 확신 일부 대체 ...

# automate the proces of reading the step no matter what its name is 
StepNames=(my_odb.steps.keys())  # it is a list of all step names 
lastStep=(StepNames[-1]) 

# automation of an instance naming (in the same way) 
NaseInstance = (my_odb.rootAssembly.instances.keys()) 
MojeInstance = (NaseInstance[-1]) 
CelaMojeInstance=my_odb.rootAssembly.instances[MojeInstance] 

누군가 새로운 데이터를 계산하고 여기에 새로운 스칼라로 채우는 방법을 찾았습니다. https://gist.github.com/crmccreary/5015483 그러나이 스크립트가 훨씬 복잡하고 프로그래머가 아니기 때문에 나는 정확히 무슨 일이 일어 났는지 이해하는데 성공하지 못했습니다.

필드에 직접 값을 직접 지정하여 작업을 단순화하려고했습니다. 나중에이 함수로 바꾸고 마지막으로이 방법으로 전체 루프를 반복 할 예정입니다. 임 "잘못된 작동 형식의 인수 형식" 양식에 관한 메시지가 표시되는데 삽입하려는 데이터의 형식이 올바르지 않다고 가정합니다. 문서 승/성공을 시도했습니다. 힌트/도움을 청할 수 있습니까? 감사!

NewField =my_odb.steps[lastStep].frames[0].FieldOutput(name='New_scalar_field',description='Our brand new scalar field', type=SCALAR) 
NewField.addData(position=NODAL, instance=CelaMojeInstance, labels=[1657, 1658, 1683, 1684, 14193, 14194, 14195, 14196], data=[(6),(12),(6),(12),(6),(12),(6),(12)]) 

my_odb.save() 
my_odb.close() 

이 녀석 솔루션은 광산 같을 것 같다 : http://abaqus-users.1086179.n5.nabble.com/Writing-Results-to-Existing-ODB-file-td21750.html

내가 질문이 너무 사소한 또는 미안, 노인 너무 바보 수 있음을 이해합니다. 내가 입력 할 때 그것이 작동하는 몇 가지 이유를 들어

+0

나를 신뢰하십시오. abaqus를 스크립트하는 사람은 누구도 불분명한 문서에 동의하지 않을 것입니다. '데이터 '에서 괄호를 빼내려고 했습니까? –

+0

안녕하세요. 감사. 나는 실제로 괄호를 링크의 녀석이 사용하기 때문에 거기에 추가했다. 차이 없음. – Jewenile

+0

대신에 수레 목록을 ried 했습니까? 즉 [12., 6.,. . . .] ' –

답변

2

:

data=[(6.0,),(12.0,),(6.0,),(12.0,),(6.0,),(12.0,),(6.0,),(12.0,)] 

값 이후의 쉼표로. 나는 이유를 정말로 모른다. 잘하면 미래에 다른 사람을 도울 수 있기를 바랍니다.

+0

그러면 1 튜플 목록이 필요합니다. 아마 당신이'type = VECTOR'를 가지고 있다면 당신은 모든 포인트에 대해 3 튜플을 필요로 할 것입니다. –

+0

이상한 점은 내가 인터넷에서 발견 한 다른 모든 (몇 가지) 예제가 필요 없다는 것입니다. 나는 그것이 GUI에있는 프로브를 선택하여 노드의 값이 실제로 위의 12 개 및 6 개임을 확인했다. – Jewenile

+0

좋은 찾기. 나중에 참조 할 수 있도록 버전 정보를 추가해야합니다. – agentp