Linear solve did not converge due to DIVERGED_ITS iterations 100
这通常是由于网格间距过小,程序在调用PETSC计算时,无法在指定次数内迭代收敛到给定的收敛阈值,可以
- 在建立网格文件时,扩大网格间距(mesh size),直至迭代计算能顺利完成.
- 调大迭代次数: 在
pylithapp.cfg
中找到Convergence paameters
对应模块,调整ksp_max_it
的数值(但不宜超过500,否则即使顺利完成计算,结果仍十分不稳定) - 调整收敛阈值(不建议): 同调大迭代次数类似,调整对应部分的
ksp_rtol
与ksp_atol
即可.
Could not find final slip at (* * *) using spatial database Final slip
这是由于修改后的断层滑移分布与指定断层的linear slip function
不匹配,给定的滑移量在同一材料范围内无法满足线性关系,一般可以
- 修改断层滑移分布至满足线性分布,示例文件中一般放在
spatialdb/finalslip.spatialdb
类似的文件中 - 不采用
linear slip function
,而使用默认的滑移分布求解方案,直接将对应*.cfg
文件中指定slip.query_type
的一行注释掉即可.
Mesh missing group of vertices ‘***’ for subdomain output
在修改范例的geometry文档时,对应边界条件surface的ID号可能也会改变,需要在mesh_***.jou
或create_bc.jou
中,找到add group对应行,重新指定边界surface的ID号.
当然更好的办法是直接在创建surface的时候给其起好名字(如name 'surface_example'
),这样之后创建边界条件时,就可以指定其名字而非之后会变动的ID号了
Material id ‘*‘ for cell ‘*‘ does not match the id of any available materials or interfaces
这是由于读取的网格文件对应材料的block ID
与*.cfg
中确定问题时的material ID
不匹配造成的,调整为相吻合的ID号即可
Surface *** has no facet
具体原因仍不明白,但个人摸索的办法是建立geometry时,对应surface的控制点坐标要尽量是整数,如50km,100km等,如果有找到好办法的欢迎评论告诉我.