abaqus磨削仿真计算时间问题(语言-python)

我现在做的是abaqus轴承内圈滚道的磨削仿真,但是提交分析后计算的很慢很慢,想请教一下有没有人知道提高计算能力并保证精度的方法呀?有别的方法也行?或者有用子程序做也行

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7692329
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:利用python提取abaqus单元质心应力及单元节点坐标
  • 除此之外, 这篇博客: 利用Abaqus的Python脚本实现进行自动分析的方法中的 我的代码: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • (这个可以不看。只是我的源码的一部分,不能运行。

    而且源码写的很乱,还是看上面的逻辑部分比较好)

    #1	Open Abaqus
    from abaqus import *
    from abaqusConstants import *
    from caeModules import *
    from driverUtils import executeOnCaeStartup
    import time
    ###粘贴后,请把所有的中文删掉才能使用###
    executeOnCaeStartup()
    #文件地址的全局变量,
    local = 'D:\\SIMULIA\\Temp\\' + pre   
    #同时运行任务的最大数量,最好小于计算机核数2-3
    rnum = 6					
    #类似与指针,指向runlist的最后一个空位										
    rtag = 0		
    #记录错误任务													
    wjob = []								
    #运行队列						
    rlist = [0,0,0,0,0,0,0,0]							
    
    #2	判断函数
    def judge(x):				
    	#运行中 返回0								
    	a = 0																
    	adress = local + str(x) + '.log'
    	fid = open(adress,'r')
    	strdata = fid.read()
    	#错误 返回-1
    	if strdata.find('exited with an error') > -1:
    		a = -1														
    	#完成 返回1
    	if strdata.find('COMPLETED') > -1:
    		a = 1															
    	fid.close()
    	return a
    #导入数据表
    DATA_TABLE = 
    #3	Circle
    for i in range(first,last):
    #4	Runlist
    	j = 0
    	#循环查看任务运行队列的.log文件
    	while rtag == rnum:			
    		#如果错误,加入错误队列
    		if judge(rlist[j]) == -1:			
    			wjob.append(rlist[j])
    		#如果错误或成功,退出队列
    		if judge(rlist[j]) == -1 or judge(rlist[j]) == 1:		
    			rlist[j:rnum] = rlist[j + 1:rnum + 1]
    			rtag = rtag - 1
    			break					
    		j = (j + 1) % rnum
    		if j == 0:
    			time.sleep(5)
    #5	Set 	
    #建模的数据设置(不管这部分)								
    	R1 = DATA_TABLE[i][0]*1.0
    	R2 = DATA_TABLE[i][1]*1.0
    	T = DATA_TABLE[i][2]*1.0
    	JX = DATA_TABLE[i][3]*1.0
    	MOCA = DATA_TABLE[i][4]*1.0
    	PRESS = DATA_TABLE[i][5]*1.0
    	NAme = str(i+1)
    	MO = 'Mo-' + NAme
    	NAme = pre + NAme
    
    	###建模部分省略,
    #9	submit
        mdb.Job(name=NAme, model=MO, description='', type=ANALYSIS, 
        atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=90, 
        memoryUnits=PERCENTAGE, explicitPrecision=SINGLE, 
        nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, 
        contactPrint=OFF, historyPrint=OFF, userSubroutine='', scratch='', 
        resultsFormat=ODB, parallelizationMethodExplicit=DOMAIN, numDomains=1, 
        activateLoadBalancing=False, multiprocessingMode=DEFAULT, numCpus=1)
    	mdb.jobs[NAme].submit(consistencyChecking=OFF)
    	rlist[rtag] = i + 1		#任务加入运行队列
    	rtag = rtag + 1			#空位指针+1
    	time.sleep(3)			#生成.log文件需要1-2秒左右
    
    #输出错误任务
    fid = open('C:\\Users\\37989\\Desktop\\wrong.txt','w')
    fid.write(str(wjob))
    fid.close()

     

     

     

     


#运行第一个脚本
import os

folder = os.getcwd() + '\\Job'
#获取此py文件路径,在此路径选创建文件夹,此py放在桌面上

if not os.path.exists(folder):
#若没有就创建
    os.makedirs(folder)

可以使用多核处理器和分布式计算技术并行运算的方式来提高运算速度

针对你的问题,我可以给你一些提高计算能力和保证精度的建议:

  1. 使用高性能计算(HPC)集群:如果你的计算机性能不够强大,可以考虑使用HPC集群进行计算。HPC集群可以提供更多的计算资源,从而加快计算速度。

  2. 优化模型:可以通过减少模型的复杂度、简化几何形状、减少单元数等方式来优化模型,从而提高计算速度。

  3. 使用并行计算:ABAQUS支持并行计算,可以将计算任务分配给多个处理器同时进行计算,从而加快计算速度。

  4. 使用子程序:可以使用ABAQUS提供的子程序功能,将一些常用的计算过程封装成子程序,从而提高计算效率。

  5. 使用Python脚本:可以使用Python脚本来自动化ABAQUS的计算过程,从而提高计算效率。

希望以上建议能够帮助到你。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
ABAQUS的计算时间通常受到以下几个因素的影响:

  1. 模型复杂度:模型越复杂,计算时间越长。因此,在设计模型时,应尽可能简化模型,减少不必要的细节和复杂性。

  2. 网格密度:网格越密,计算时间越长。因此,在生成网格时,应根据需要平衡网格密度和计算效率。

  3. 求解器选项:不同的求解器选项会对计算时间和精度产生影响。应根据需要选择适当的求解器选项。

  4. 计算机硬件:计算机硬件的性能和配置也会影响计算时间。应尽可能使用高性能硬件和配置。

以下是一些提高ABAQUS计算能力和保证精度的方法:

  1. 优化模型:根据实际需要,尽可能简化模型,减少不必要的细节和复杂性。

  2. 优化网格:根据需要平衡网格密度和计算效率,使用高效的网格生成算法,选择合适的网格类型和大小,避免不必要的细节。

  3. 优化求解器选项:根据实际需要,选择适当的求解器选项,例如时间步长、收敛准则、非线性求解器等,以提高计算效率和精度。

  4. 并行计算:ABAQUS支持并行计算,可以利用多核处理器和分布式计算集群,提高计算效率。

  5. 使用子程序:可以通过编写子程序,自定义材料模型、边界条件等,以提高模型精度和计算效率。

  6. 调整计算机硬件:可以使用高性能计算机、显卡、存储器等硬件,以提高计算效率和精度。

总之,提高ABAQUS计算能力和保证精度的方法是多种多样的,需要根据具体的模型和需求选择合适的方法和工具。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

对于提高计算能力并保证仿真精度的方法,以下是几点建议:

  1. 使用更高性能的计算机:升级到性能更好的计算机,包括更高的处理器速度、更大的内存和更强大的图形处理能力,可以显著提高计算速度。
  2. 并行计算:利用计算机的多核处理能力,将计算任务分解成多个子任务进行并行计算。Abaqus支持并行计算,可以通过设置适当的参数来充分利用计算资源。
  3. 优化模型:简化模型几何形状、减少节点和单元数量、优化边界条件等操作可以降低计算复杂度,从而加快计算速度。但需要注意在简化模型过程中保持足够的精度。
  4. 选择适当的求解器和算法:Abaqus提供多种求解器和算法,选择适合具体问题的求解器和算法可以提高计算效率。在求解器设置中,可以尝试不同的选项,以找到最佳组合。
  5. 使用子程序:Abaqus允许使用用户定义的子程序,可以通过编程方式优化计算过程,提高计算速度和精度。合理编写子程序,利用高效的算法和数据结构可以加速仿真计算。

此外,还可以考虑使用其他仿真软件或者分布式计算方法,如云计算,以提高计算能力和加速仿真过程。

请注意,以上建议仅供参考,具体的应用需要根据您的具体情况进行调整和优化。