마지막 작업의 출력을 기준으로 재료 매개 변수를 교정하는 Python으로 작성된 스크립트가 있습니다. 즉, 오류가 충분히 작을 때까지 Abaqus에서 많은 작업을 연속적으로 실행합니다 .Abaqus에서 연속 작업을 실행할 때 사용자 서브 루틴을 한 번만 컴파일하십시오.
각 작업 전에 컴파일되는 Fortran 서브 루틴을 사용합니다.
문제는 내가 제출 한 각 작업에 대해 사용자 서브 루틴이 컴파일된다는 것입니다. 입력 매개 변수가 마지막 작업과 다르더라도 사용자 서브 루틴은 다시 컴파일 할 필요가 없습니다. 서브 루틴 컴파일은 작업 실행 시간의 약 80 %를 차지합니다.
어떻게하면 사용자 서브 루틴을 한 번만 컴파일하고 연속적으로 실행하도록 지정할 수 있습니까?
다음은 Python으로 작성된 관련 코드 스 니펫입니다. 터미널에
abaqus cae nogui=script.py
을 입력하여 스크립트를 실행합니다. 이 코드는 Abaqus 스크립팅 인터페이스를 사용합니다.
작업을 만들기 :
mdb.Job(name=self.jobName, model='Model-1', 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=self.userSubroutinePath,
scratch='', resultsFormat=ODB, multiprocessingMode=DEFAULT, numCpus=1,
numGPUs=0)
제출 및 작업 완료 기다립니다
mdb.jobs[self.jobName].submit(consistencyChecking=OFF)
mdb.jobs[self.jobName].waitForCompletion()
이 코드는 내가 이전 실행의 데이터를 연속 작업을 실행할 때마다 실행됩니다.
컴파일러 버전 15.0.0.090이
module add abaqus
module add intel
module add gcc
다음
I 를 입력하여 20140723.
룩을 실행할 준비가'ABAQUS make' – agentp
@agentp 네, '도서관 = umat.f 할 ABAQUS'하지만 난 내용의 프롬프트를 얻을 명령을 사용하여 'Missing Required argument : job ='입니다. 매뉴얼에 따르면 'abaqus make {job = OR 라이브러리 = }'을 사용할 수 있기 때문에 논란의 여지가 없습니다.감사합니다 –
DjungelJarl
제 생각에 "abaqus"명령은 실제 abaqus 명령에 인수를 전달하기 전에 일부 전처리를 시도하는 스크립트입니다. abaqus 실행 파일의 실제 전체 경로를 확인하고 실행하십시오. – agentp