2017-10-23 23 views
1

Abaqus에서 선택한 기본 요소는 C3D8R이므로이를 C3D8I로 변경하고 싶습니다. CAE에서 요소 유형을 변경하는 방법이나 파이썬을 사용하여 재귀 적으로 변경하는 방법을 알고 있지만 기본값은 아닙니다.Abaqus의 기본 요소 유형 변경

문제는 내가 파티션을 만들고 다시 메쉬하면 이전 선택 사항을 덮어 쓰고 기본 C3D8R이 생성된다는 것입니다.

감사합니다,

R.

편집 : 다음 비틀기가 사용할 수있는 SIMULIA 커뮤니티에서 페르난도 C.에 감사합니다. 그래도 더 나은 솔루션을 찾고 있습니다!

레미,

나는 기본 요소는 하드 코드라고 생각하고 그래서 우리는 당신이 변경할 수있는 설정이 없습니다.

하지만 절망하지 마십시오. methodCallback을 사용하여 파트/인스턴스가 작성된 후 자동으로이를 변경할 수 있습니다.

이것을 abaqus_v6.env 파일에 넣으면 항상 그렇게됩니다.

import methodCallback 

from abaqus import * 

from abaqusConstants import * 

def changeDefaultElementType(callingObject, arguments, keywordArguments, userData): 

    print 'Changing the default element type' 

    p = getMethodReturnValue() 

    p.setElementType(

     elemTypes=(

      ElemType(elemCode=C3D8I, elemLibrary=STANDARD, secondOrderAccuracy=OFF, distortionControl=DEFAULT), 

      ElemType(elemCode=C3D6, elemLibrary=STANDARD), 

      ElemType(elemCode=C3D4, elemLibrary=STANDARD) 

      ), 

     regions=(p.cells.getSequenceFromMask(('[#1 ]',),),) 

     ) 

methodCallback.addCallback(ModelType, 'Part', changeDefaultElementType, callAfter=True) 

예는 좀 더 (예를 들어, 요소가 3D 부품 만 입력 등을 변경) 그것을 연마 할 수 있습니다, 조금 거친입니다.

+0

이 SIMULIA에 이력서를 보내? – agentp

+0

내 이력서 또는 제 질문은 무엇입니까? 내 질문은 simulia 커뮤니티에도 게시됩니다. https://swym.3ds.com/#community:73/iquestions:35658 하지만 여기서는 더 많은 잠재 고객에게 도달 할 것으로 생각했습니다. 내 이력서는 여기에서 얻을 수 있습니다 : https://www.linkedin.com/in/remyrouxditbuisson/ 보시다시피, 이미 가지고 있습니다;) –

+0

미안 해요. 내 말은 회사가 기본값을 변경해야한다고 생각합니다. – agentp

답변

1

기본 요소 유형을 변경하면 아바쿠스/CAE 한편 2018

에서 사용할 수 있습니다, 다음 함수는 custom_v6.env에 추가 할 수 있습니다. (C : \ 프로그램 파일 \ 다쏘 시스템 \ SimulationServices \ V6R2017x \ 아바쿠스 \ win_b64 SMA \ 사이트 \의 custom_v6.env \)

def onCaeStartup(): 
    import methodCallback 
    from mesh import ElemType 
    from job import ModelJobType 

    ## Function to be called when an input file is written 
    def checkElementType(callingObject, arguments, keywordArguments, userData): 
     print 'Checking element types in the model' 

     # Get the name of the job from the command 
     a = str(callingObject).split("jobs['")[1] 
     job = a.split("']")[0] 

     model = mdb.jobs[job].model 
     ra = mdb.models[model].rootAssembly 

     # Query the Element Types in the assembly and display them 
     elemType=[] 
     for instance in ra.instances.keys():  
      for cell in ra.instances[instance].cells: 
       if ra.getElementType(region=cell,elemShape=HEX).elemCode not in elemType: 
        elemType.append(ra.getElementType(region=cell,elemShape=HEX).elemCode) 
        print 'INSTANCE: '+instance +' = '+ ra.getElementType(region=cell,elemShape=HEX).elemCode 

    # Define the callback. When the writeInput method is called on a ModelJobType object, the function checkElementType is executed.     
    methodCallback.addCallback(ModelJobType, 'writeInput', checkElementType)